在我的实验室中,我们必须输入用户输入的数字,直到输入“0”。然后程序将找到最大值,计算出现次数,并输出两个数字。
这是我的代码:
Scanner scan = new Scanner(System.in);
int max = Integer.MIN_VALUE, count = 0, num;
System.out.println ("Enter a number (Enter a 0 to stop): ");
num = scan.nextInt();
while (num != 0){
System.out.println ("Enter a number: ");
num = scan.nextInt();
if (num >= max){
max = num;
count ++;
}
}
System.out.println("\nMax number was: " + max);
System.out.println("Number of occurences: " + count);
现在当它输出时,有时我会得到正确的答案,有时候却没有。我想我只是把循环错了或者计数器需要重置,但我无法弄明白。
例如:
如果我输入:3,5,2,5,5,5,0
输出显示: 最大数量为:5 发生次数:4
但如果我输入:3,5,9,2,5,9,0
输出显示: 最大数量是:9 发生次数:3
只是寻找一些建议。非常感谢帮助:D
答案 0 :(得分:2)
如果是num > max
,那么它是第一次出现的最大值,count
应该设置为1.如果num == max
,那么它是另一次出现的最大值,{{1应该增加。
此外,正如@doelleri在评论中正确提到的那样,第一个数字会被忽略。
答案 1 :(得分:1)
此处使用的最佳循环是do...while
以下是对您的代码的更正:
只有找到新的count
时,您才必须重置max
变量。
do{
System.out.println ("Enter a number: ");
num = scan.nextInt();
if (num > max){
max = num;
count = 1;
} else if (num == max){
count++;
}
}while (num != 0);
System.out.println("\nMax number was: " + max);
System.out.println("Number of occurences: " + count);
答案 2 :(得分:0)
当找到新的最大值时,您需要重置计数变量。
答案 3 :(得分:0)
当您观察到新的最大值时,您需要重置计数器。此外,您应该使用do-while
而不是while
循环。因为do-while
循环总是执行一次,所以你可以在循环中获取用户输入。
Scanner scan = new Scanner(System.in);
int max = Integer.MIN_VALUE, count = 0, num;
System.out.println ("Enter a number (Enter a 0 to stop): ");
do {
System.out.println ("Enter a number: ");
num = scan.nextInt();
if (num >= max){
count = num == max ? count+1 : 1;
max = num;
}
}while(num != 0);
System.out.println("\nMax number was: " + max);
System.out.println("Number of occurences: " + count);