Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-decimal在计算平均值时保持X.0_Java_Loops_Int_Double_Decimal - Fatal编程技术网

Java-decimal在计算平均值时保持X.0

Java-decimal在计算平均值时保持X.0,java,loops,int,double,decimal,Java,Loops,Int,Double,Decimal,在这个脚本中,我需要填充一行数字,并在需要停止时键入-1。当它停止时,它应该计算并显示数字总数(总和)、填写的数字数量(不包括-1(数量)和平均值(平均值)。每当我输入10和20这样的数字时,很好地显示平均值是15。但是当小数必须改变时,例如,我输入10和11(因此它必须显示10.5),它只显示10.0,因此它是错误的。当平均值为双精度时,为什么小数点保持在X.0?我做错了什么 public static void main(String[] args) { Scanner reade

在这个脚本中,我需要填充一行数字,并在需要停止时键入-1。当它停止时,它应该计算并显示数字总数(总和)、填写的数字数量(不包括-1(数量)和平均值(平均值)。每当我输入10和20这样的数字时,很好地显示平均值是15。但是当小数必须改变时,例如,我输入10和11(因此它必须显示10.5),它只显示10.0,因此它是错误的。当平均值为双精度时,为什么小数点保持在X.0?我做错了什么

public static void main(String[] args) {

    Scanner reader = new Scanner(System.in);
    int sum = 0;
    int amount = 0;
    double avg = 0;

    while (true) {
       System.out.println("Type numbers: ");
       int number = Integer.parseInt(reader.nextLine());
       if (number == -1) {
          break;
       } else {
          amount++;
          sum = sum + number;           
       }  
   }
   avg = avg + sum / amount;

   System.out.println("Thank you and see you later!");
   System.out.println("The sum is: " + sum);
   System.out.println("How many numbers: " + amount);
   System.out.println("Average: " + avg);
}

表达式
avg=avg+sum/amount可简化为
avg=总和/金额

但是,
sum/amount
部分将为您提供一个
int
结果,因为
sum
amount
int
都会生成
/
结果

因此,必须对(至少)一个操作数执行强制转换,即:

avg = ((double) sum) / amount;

将整数和转换为浮点数,将整数金额转换为浮点数。 或


定义“十进制”。你是说(a)基数(b)小数点(c)小数位(d)数字吗?提示:只有(a)是正确的;其他的只是对标准术语的误用。NB Java不是一种脚本语言,这也不是一种脚本。很抱歉,它不清楚,不管怎样,从你的帖子中学到了一些新东西;)道歉不是必须的,但目的是修正你的帖子,让人们知道你在说什么。假设意味着一个答案,也就是说。这个表达也不正确<代码>平均值=总和/计数,
根据定义。代码之所以有效,是因为
average
已初始化为零。感谢您的帮助,这正是我所需要的。我想知道这个社区有什么咸向下投票虽然哈哈,我是新来的。
avg=((double)sum)/amount;