使用循环,我想计算Java中n个数字的平均值,当用户输入0时,循环结束。下面是我写的代码:
public class start {
public static void main(String[] args) {
System.out.println("Enter an int value, the program exits if the input is 0");
Scanner input = new Scanner (System.in);
int h = 0;
while (input.nextInt() == 0){
int inp = input.nextInt();
int j = inp;
int i = 0;
h = j + i;
break;
}
System.out.println("The total is: "+ h);
}
}
我是不是犯了什么逻辑错误?
8条答案
按热度按时间blmhpbnm1#
0qx6xfy62#
“我是不是犯了什么逻辑错误?“
是的,这看起来像是家庭作业题,所以我就不给你们拼出来了,但是想想
i
的值是什么,在这个例子中h = j + i
是什么意思。您还需要小心调用
input.nextInt()
。当你每次通过循环调用它两次时会发生什么(这就是你正在做的)?piztneat3#
作业,对吧?
在while循环条件中调用
input.nextInt()
并填充int inp
意味着每次循环都阅读两个数字(其中一个被忽略)。您需要找出一种方法,每次循环迭代只读取一个数字,并将其用于== 0
比较以及inp
比较。另外,在while循环外使用
h
是正确的,但我认为您将自己与循环内的j
和i
混淆了。您可以考虑稍微更具描述性的名称--这将使您的代码更容易推理。watbbzwu4#
你需要保留一个计数器,记录你读了多少个数字,这样你就可以用这个数字除以总数,得到平均值。
eaf3rand5#
编辑while循环:
您最初的实现调用了nextInt()两次,这会导致每隔一个数字就丢弃一个(这肯定不是您想要做的)。
swvgeqrz6#
假设你只要求用户输入一次,如果数字为零,你只想显示平均值。你需要在while循环外声明一个变量,它将不断添加用户输入的不同数字,沿着第二个变量,它跟踪用户输入的案例数,并保持递增1,直到用户输入的数字不为零。当用户输入0时,循环将中断,这里将显示我们的平均值。
希望能帮上忙
问候
wz8daaqr7#
是的,大量的逻辑错误。
其他一些需要考虑的事项:
kulphzqa8#
我建议你参考“while”循环的条件:如果条件满足,程序会怎么做?(如果你懂一点VB,do ... until ...然后...)
另外,当您调用scanner.nextInt()时,程序会做什么?对于每个输入,您应该如何调用它?
最后但并非最不重要的一点是,什么时候应该使用“break”或“continue”?
对于基础知识,如果你在一门课程,建议你去理解笔记。或者你可以找到一些解释Java细节的好书。Java中的Thinking
喜欢学习Java。