我在显示平均值的小数时遇到问题。它一直显示 .00 或 .1。
我尝试将其放入 double 中,但仍然得到相同的结果。另外,我想将输入的第一个整数包含在总和中,但我不知道如何操作。请帮助:
import java.io.*;
import java.util.*;
public class WhileSentinelSum
{
static final int SENTINEL= -999;
public static void main(String[] args)
{
// Keyboard Initialization
Scanner kbin = new Scanner(System.in);
//Variable Initialization and Declaration
int number, counter;
int sum =0;
int average;
//Input
System.out.print("Enter an integer number: " );
number = kbin.nextInt();
counter=0;
//Processing
//Output
while(number != SENTINEL)
{
counter++;
System.out.print("Enter an integer number: ");
number = kbin.nextInt();
sum += number;
}
if (counter !=0)
System.out.println("\nCounter is: " + counter);
else
System.out.println("no input");
average= sum/counter;
System.out.println("The sum is " + sum);
System.out.println("The average is " + average);
System.out.println();
}//end main
}//end class
即使你声明average
to be double
, the sum
and counter
变量是int
,所以Java仍然使用整数除法 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.2在将其分配给之前average
, e.g. 5 / 10
结果是0
代替0.5
.
将其中一个变量转换为double
在除法之前强制进行浮点运算:
double average;
...
average = (double) sum / counter;
您可以在进入 while 循环之前通过处理第一个数字来将其包含在计算中(如果它不是哨兵值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)