【问题标题】:error: incompatible types: possible lossy conversion from double to int错误:不兼容的类型:从 double 到 int 的可能有损转换
【发布时间】:2015-12-05 01:05:57
【问题描述】:
public class FoodItem {

 private String name;
 private int calories;
 private int fatGrams;
 private int caloriesFromFat;

 public FoodItem(String n, int cal, int fat) {
    name = n;
    calories = cal;
    fatGrams = fat;  
 }

 public void setName(String n) {
    name = n;
 }

 public void setCalories(int cal) {
    calories = cal; 
 }

 public void setFatGrams(int fat) {
    fatGrams = fat;  
 }

 public String getName() {
    return name;
 }

 public int getCalories() {
    return calories;
 }

 public int getFatGrams() {
    return fatGrams; 
 }

 public int getCaloriesFromFat() {
    return (fatGrams * 9.0); 
 }

 public int getPercentFat() {
    return (caloriesFromFat / calories);
 }

 // Ignore for now
 public String toString() {
    return name + calories + fatGrams;
 }
}

我的指令是“包括一个名为caloriesFromFat 的方法,它返回一个整数,其中包含脂肪对总卡路里的贡献(脂肪克数* 9.0)。”,但是当我尝试编译时,我得到了上述错误。我不知道我做错了什么。

【问题讨论】:

    标签: java


    【解决方案1】:

    您在 getCaloriesFromFat 的乘法中使用了 double 文字 9.0。因此,fatGrams 被提升为 double 以进行乘法运算,乘积为 double。但是,您有该方法返回 int

    您可以使用 int 文字(9,没有小数点),或者您可以让 getCaloriesFromFat 返回 double 而不是 int。因为你只是乘以9,所以我会使用int 文字9

    【讨论】:

    • 另外,我的驱动程序要求脂肪百分比 "System.out.printf("脂肪百分比是 %.1f%%\n", fries.percentFat());"但是当我运行驱动程序时,它只返回 0.0%。你知道是什么原因造成的吗?
    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多