我不确定为什么它不能在getPriceDollar中返回正确的值。在第一个测试中,它是正确的,但是在第二个测试中,它不是。
似乎无法正常工作,但是我发现内存有问题。在我将其退回的那一刻,可能已经有其他情况了。所以这是不确定的行为,对吗? 如何避免呢?
public class FoodTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Food object = new Food();
object.setName("Kaisen Don");
System.out.print( object.getName() + ":");
object.setPrice(480);
System.out.print(object.getPrice() + " Bath");
System.out.print( +object.getPriceDollar() + " $ ");
object.setCalories(350.0);
System.out.println( +object.getCalories() + " kCal ");
object.setName("Tokyo Sundae");
System.out.print( object.getName() + ":");
object.setPrice(180);
System.out.print(object.getPrice() + " Bath");
System.out.print( +object.getPriceDollar() + " $ ");
object.setCalories(500.5);
System.out.print( +object.getCalories() + " kCal ");
}
}
public class Food {
private String name;
private int price;
private double calories;
public String getName() {
return name;
}
public void setName(String name1) {
name=name1;
}
public double getCalories() {
return calories;
}
public void setCalories(double calories1){
calories=calories1;
}
public int getPrice() {
return price;
}
public double getPriceDollar() {
return price / 32;
}
public void setPrice(int price1) {
price=price1;
}
}
expected
Kaisen Don:480 Baht (15.0$) 350.0 kcal
Tokyo Sunday:180 Baht (5.625$) 500.5 kcal
actual results
Kaisen Don:480 Bath15.0 $ 350.0 kCal
Tokyo Sundae:180 Bath5.0 $ 500.5 kCal
答案 0 :(得分:1)
用Java划分是一件棘手的事情。用一个整数除以另一个整数时,结果将被截断为一个整数,与您所遇到的完全相同。而且,声明结果应为双精度数并没有帮助,编译器仍会进行整数除法,然后才将整数结果转换为双精度数。
将getPriceDollar()
方法更改为:
public double getPriceDollar() {
return price / 32.0;
}
然后是一个整数乘以除的结果,结果为double
,一切都会好起来的。
答案 1 :(得分:0)
您正在尝试在价格处返回整数。这就是为什么您得到那个结果。 该代码将为您提供正确的结果-
public class FoodTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Food object = new Food();
object.setName("Kaisen Don");
System.out.print( object.getName() + ":");
object.setPrice(480);
System.out.print(object.getPrice() + " Bath");
System.out.print( +object.getPriceDollar() + " $ ");
object.setCalories(350.0);
System.out.println( +object.getCalories() + " kCal ");
object.setName("Tokyo Sundae");
System.out.print( object.getName() + ":");
object.setPrice(180);
System.out.print(object.getPrice() + " Bath");
System.out.print( +object.getPriceDollar() + " $ ");
object.setCalories(500.5);
System.out.print( +object.getCalories() + " kCal ");
}
}
class Food {
private String name;
private double price;
private double calories;
public String getName() {
return name;
}
public void setName(String name1) {
name=name1;
}
public double getCalories() {
return calories;
}
public void setCalories(double calories1){
calories=calories1;
}
public double getPrice() {
return price;
}
public double getPriceDollar() {
return price / 32;
}
public void setPrice(double price1) {
price=price1;
}
}