Java 程序允许用户输入数字,直到输入零,然后打印总数、输入数和平均值
我能够让程序询问数字,直到输入零,当输入零时,程序显示总计、条目和平均值。但给出的值不正确 这是我的密码:Java 程序允许用户输入数字,直到输入零,然后打印总数、输入数和平均值,java,loops,Java,Loops,我能够让程序询问数字,直到输入零,当输入零时,程序显示总计、条目和平均值。但给出的值不正确 这是我的密码: import java.util.Scanner; public class Question14 { public static void main (String [] args){ double number = 0; double average = 0; int count = 0; double sum
import java.util.Scanner;
public class Question14 {
public static void main (String [] args){
double number = 0;
double average = 0;
int count = 0;
double sum = 0;
System.out.print("enter a number: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
while (number > 0){
System.out.print("enter a number: ");
number = sc.nextInt();
count++;
sum += number;
average = sum/count;
}
if (number == 0){
System.out.println("total: " + sum);
System.out.println("number of entries: " + count);
System.out.println("average: " + average);
}
}
}
就这么做吧:
int input = 0, sum = 0, i = 0;
Scanner sc = new Scanner(System.in);
do {
System.out.println("Enter a number: ");
input = sc.nextInt();
sum += input;
i++;
} while (input != 0);
System.out.println("Sum: " + sum);
System.out.println("Avg: " + (double) (sum/i));
您跳过了第一个数字,即循环前读取的数字。此外,在循环结束之前,不需要计算平均值。您似乎在丢弃输入的第一个数字。在他们输入第二个数字之前,您不会开始加法和计数。
number>0
并不意味着直到输入了0
。正确的方法是number!=0
,否则任何负值也将退出循环。如果您想打印您输入的数字,只需打印它,它将平均值向下舍入。可能不是我们想要的。而且,它包括平均值中的最后零,这也可能不是我们想要的。因此,例如,如果您希望得到6
和7
的平均值,这将显示4
(即(6+7+0)/3
,向下舍入);所以你得到了一个不全面的答案。