java - 在 Java 中获取 NaN 的可能修复

标签 java nan

我在 Candy 类中有一个名为 pricePerHundredGrams 的方法,它应该做的是将变量价格乘以 100.00,然后将该答案除以变量 weightGrams,最后将该结果返回给变量 wammy。当在此代码的最后 2 条语句中调用变量 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;
}

最佳答案

您正在使用 pricePerHundredGrams 的结果初始化 wammy,但 priceweightGrams 尚未初始化然而,所以它们都是 0。对于 double 算术,0 除以 0NaN(它在数学上是不确定的)。

初始化 wammy after priceweightGrams 在构造函数中具有有效值:

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);
}

此外,由于它们已经是实例变量,因此您无需将 priceweightGrams 作为参数传递给 pricePerHundredGrams

关于java - 在 Java 中获取 NaN 的可能修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940632/

相关文章:

java - HSV 颜色范围检测

python - 裁剪矩阵的 nan 行和列,但保持正方形

python - 基于现有列值的新列

java - 在屏幕上随机生成一个圆圈,并使其变为绿色或红色

java - 一轮 sql.Timestamp

java - JTextArea 始终为空?

Java:反射(在运行时)与镜像(在注释处理时)

python - 在 dtype obj 的 NumPy 数组中查找缺失值

如果值不为空,Python 处理特定 Pandas DataFrame 列的最佳方法

Python numpy.nan 和逻辑函数 : wrong results