显示平均小数位数时出现问题。它一直显示.00或.1。
我尝试将其加倍,但仍然得到相同的结果。此外,我想将输入的第一个整数包括在总和中,但我不知道如何。请帮助:
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
声明为double
,sum
和counter
变量也是int
,因此Java在将其分配给average
之前仍然使用integer division,例如5 / 10
生成0
而不是0.5
。
在除法之前将变量之一强制转换为double
以强制执行浮点运算:
double average;
...
average = (double) sum / counter;
您可以在进入while循环之前处理第一个数字(如果它不是前哨值),则可以在处理中包含第一个数字。