我在Candy Class中有一个名为pricePerHundredGrams的方法,它应该做的是将变量价格乘以100.00并将该答案除以变量weightGrams,最后将该结果返回给变量wammy。当在此代码的第二个最后一个语句中调用变量wammy时,它应该将答案传递给返回结果。并且最终c1和c2也应该显示结果......但是我得到“每百克”的NaN。我的代码出了什么问题?
public class whatever
{ public static void main (String[] args)
{
processCandies();
System.out.println("end of processing");
}
public static void processCandies()
{
Candy c1 = new Candy("Hershey", 145, 4.35, 233);
Candy c2 = new Candy("Milky Way", 390, 2.66, 126);
System.out.println(c1);
System.out.println(c2);
}
}
class Candy
{
private String name;
private int calories;
private double price;
private double weightGrams;
double wammy = pricePerHundredGrams(price, weightGrams);
/**
Constructor
@param name
@param calories
@param price
@param gram
*/
public Candy(String n, int cal, double p, double wG)
{
name = n;
calories = cal;
price = p;
weightGrams = wG;
}
public String getName()
{
return name;
}
public int getCalories()
{
return calories;
}
public double getPrice()
{
return price;
}
public double getWeightGrams()
{
return weightGrams;
}
public double pricePerHundredGrams(double price, double weightGrams)
{
return (price * 100.00) / weightGrams;
}
public String toString()
{
String result;
result = name + "\n" + calories + " calories\n" + weightGrams + " grams\n" + wammy + " per hundred grams\n";
return result;
}
}
答案 0 :(得分:8)
您正在使用wammy
的结果初始化pricePerHundredGrams
,但price
和weightGrams
尚未初始化,因此它们都是0
。对于double
算术,0
除以0
为NaN
(它在数学上是不确定的)。
wammy
之后初始化price
,weightGrams
在构造函数中包含有效值:
public Candy(String n, int cal, double p, double wG)
{
name = n;
calories = cal;
price = p;
weightGrams = wG;
// Initialize wammy here.
wammy = pricePerHundredGrams(price, weightGrams);
}
此外,由于它们已经是实例变量,因此您无需将price
和weightGrams
作为参数传递给pricePerHundredGrams
。