我试图从循环中找到最大数量,并且它的出现次数。这是我到目前为止编写的代码。
public class MaxNumbers {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int max = 0;
int number = 0;
int count_max = 0;
while (true) {
number = input.nextInt();
if (number == 0) {
break;
}
number = max;
if (max > number) {
max=number;
count_max++;
}
}
System.out.println("Max Number: " + number);
System.out.println("Occurences: " + count_max);
}
我输出中只有零,我正在做出任何逻辑错误?
答案 0 :(得分:2)
这是我认为你想要实现的版本,它主要是有效的,请注意你必须开始输入数字,如果你开始使用它描述失败的字符串,还要注意大于{的数字。 {1}}被忽略或'修剪'
long
答案 1 :(得分:1)
是的,你有这条线:
number = max
接着是
if (max > number) {
max永远不会大于数字,因为你只是在前一行中将它们设置为相等
答案 2 :(得分:0)
删除第number = max
行
答案 3 :(得分:0)
代码存在一些问题。这应该适合你:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int max = Integer.MIN_VALUE;
int number = 0;
int count_max = 0;
while (true) {
number = input.nextInt();
if (number == 0) {
break;
}
if(max == number){
count_max++;
}
if (max < number) {
max=number;
count_max = 1;
}
}
System.out.println("Max Number: " + max);
System.out.println("Occurences: " + count_max);
}
答案 4 :(得分:0)
我认为您需要修改“number = max”所在的行。你在那里的代码是每次循环时将number的值设置为max的值。由于第一次循环时它的值为0,因此它将无限期地保持为零。这意味着你的最大值永远不会改变。
所以你不想要那条线,但你确实想要它。 如果 具有与(==)max相同的值,则,则需要向count_max添加1。
最后一个If块也需要稍微调整一下。 如果你找到一个新的最高值(即数字&gt; max ,而不是相反),那么你需要重置你的count_max为1,而不是加1。
答案 5 :(得分:0)
这是代码的更正版本,并突出显示您的错误。
Scanner input = new Scanner(System.in);
int max = 0;
int number = 0;
int count_max = 0;
while (true) {
number = input.nextInt();
if (number == 0) {
break;
}
// you are assigning number = max, and max is 0 initially, so number
// =0;
// number =max;
// if number =0 and max =0 then below condition will never // satisfied.
if (max < number) {
max = number;
// it means every time when you have any number greater then the // second one just add it.
// count_max++;
count_max = 0;
}
// This condition will make sure that only add count by 1 if max =
// currentNum
if (max == number) {
count_max++;
}
}
// You have written number instead of max down there.
System.out.println("Max Number: " + max);
System.out.println("Occurences: " + count_max);