程序如下public static void main(String[] args) {
 
      double sum = 0.0;
      System.out.println("输入需要计算的数值:");
  Scanner reader = new Scanner(System.in );
  String str = reader.nextLine();
  int count = 0;
  while(!str.equals("stop")){
 
     sum = sum +  Double.parseDouble(str);
 count++;
 System.out.println("现在输入的是第"+count+"个数值"); 
     str = reader.nextLine(); 
 
   }
  System.out.println("数值的总和是"+ sum + "平均数为:" + ((sum/count)==0.0?0.0:new Double((sum/count)).doubleValue()));
}输入需要计算的数值:
stop
数值的总和是0.0平均数为:NaN我已经转换过了,为什么平均数还是NaN? 多谢

解决方案 »

  1.   

    int count = 0; 
    count初始值是0
    sum/count 就是NaN
      

  2.   

    你应该判断下count
    count为0,就是没有输入
    没有输入,哪来的平均值
      

  3.   

    除数不能为0哦,为0的话就是0/0了,非法得的结果就是NaN
      

  4.   

    我运行了怎么没问题?:

    输入需要计算的数值:
    3
    现在输入的是第1个数值
    4
    现在输入的是第2个数值
    stop
    数值的总和是7.0平均数为:3.5
      

  5.   

    我运行也没有问题,不过你这个输入的时候应该做更多的限制,比如输入的时候不能是非数字的字符等等,我是在eclips上运行的。
      

  6.   

    System.out.println("数值的总和是"+ sum + "平均数为:" + ((sum/count)==0.0?0.0:new Double((sum/count)).doubleValue())); 
    这句中的((sum/count)==0.0?0.0:new Double((sum/count)).doubleValue())没有必要吧,直接sum/count就可以了。
      

  7.   

    因为是double型,所以系统不认为是真正的0,可能是0.000000000000000000001也可能,所以最后有个NaN