我遇到了以下问题:
编写一个Java程序,提示用户输入10个正整数,然后查找最大值及其出现次数。提示:使用While循环。
样品运行:请输入10个数字:
1
2
46
1
0
5
46
46
6
27
最大值是:46,它发生3次。
以下是我的解决方案:
import java.util.*;
public class numbers{
public static void main(String args[]){;
Scanner input=new Scanner (System.in);
int n=0;
int H=1;
int y=0;
System.out.println("please Enter 10 numbers:");
while (n<10){
int f=input.nextInt();
if ( f>n)
y=f;
else if(y==f)
H++;}
System.out.println("the biggest value is: "+
n+" and it is occurs "+
H+" times");
}}
但问题结果不正确:“(
我该怎么办?!
谢谢,但它使无限循环!!
import java.util.*;
public class numbers{
public static void main(String args[]){;
Scanner input=new Scanner (System.in);
int n=0;
int H=0;
int y=0;
System.out.println("please Enter 10 numbers:");
while (n<10){
int f=input.nextInt();
if ( f>y){
y=f;
H=1;}
else if(y==f){
H++;
n++; }
}
System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");
}}
最后我发现了我的错误“感谢您的帮助”
纠正我的代码后
import java.util.*;
public class numbers{
//main method
public static void main(String args[]){;
Scanner input=new Scanner (System.in);
int n=0;
int H=0;
int y=0;
System.out.println("please Enter 10 numbers:");
while (n<10){
int f=input.nextInt();//f the numbers
if(y==f)
H++;//to count how many repeat
if ( f>y){
y=f;// if numbers greater than y put value of f in y
H=1;}
n++;//to update counter
}
System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");
}// end main
}// end class
答案 0 :(得分:2)
第一个错误:
System.out.println("the biggest value is: "+n+" and it is occurs "+H+" times");}}
n
是您的TryCount。应该是:
System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");}}
第二个错误:
您正在增加“最高”数字的计数:else if(y==f) H++;
- 但是您没有考虑,当发生变化时会发生什么?所以,输入1,1,1,1,1,1,2会给你“7次出现2” - 这是错误的。
当记录新的最高号码时,您需要“重置”(设置为“1”)“最高 - 出现次数”:
if ( f>y){
y=f;
H = 1;
}
第三个错误:上面已经修正:它应该是f>y
而不是f>H
提示:提供您的变量有意义的名称 - 所以你不要轻易搞砸:
import java.util.*;
public class numbers{
public static void main(String args[]){;
Scanner input=new Scanner (System.in);
int runs=0;
int highestCount=0;
int highestValue=0;
System.out.println("please Enter 10 numbers:");
while (runs<10){
int inputValue=input.nextInt();
if ( inputValue>highestValue){
highestValue=inputValue;
highestCount = 1;
}
else if(inputValue==highestValue){
highestCount++;
}
}
System.out.println("the biggest value is: "+highestValue+" and it is occurs "+highestCount+" times");
}
}
更容易阅读,不是吗?