我正在编写一个程序,用户必须输入10个数字,然后输出将是最高数字和最低数字。我的代码有问题但找不到它。
int highest=0, lowest=0, num=0;
Scanner scan = new Scanner(System.in);
for (int i=0; i<10; i++) {
System.out.print("Enter a number:");
num = scan.nextInt();
}
if (num > highest) {
highest = num;
}
else if(num < lowest) {
lowest = num;
}
System.out.println("Highest number is: " + highest);
System.out.println("Lowest number is: " + lowest);
答案 0 :(得分:10)
以不同方式初始化您的值:
int highest = Integer.MIN_VALUE;
int lowest = Integer.MAX_VALUE;
如果将它们初始化为零,则永远不会有低于零的“最高”值或零以上的“最低”值
答案 1 :(得分:5)
您应该在if
循环中放置两个for
条件,否则您只会比较最后一个数字。最低值不应设置为0,而应设置为Integer.MAX_VALUE
答案 2 :(得分:2)
您的初始化和逻辑存在一些问题:
int highest=Math.MIN_VALUE;
int lowest=Math.MAX_VALUE;
int num=0;
Scanner scan = new Scanner(System.in);
for(int i=0; i<10; i++){
System.out.print("Enter a number:");
num = scan.nextInt();
if (num > highest){
highest = num;
}
if(num < lowest){
lowest = num;
}
}
System.out.println("Highest number is: " + highest);
System.out.println("Lowest number is: " + lowest);
您还应该使用2个if
条件而不是else if
。如果您只有一个号码,那么您最终会得到类似highest
等于您输入的某个数字的内容,而lowest
仍然等于Math.MAX_VALUE
。这可能会引起混淆。
答案 3 :(得分:1)
您隐含地假设最低和最大为0,现在可能是这种情况, 试试这段代码片段。
class Main{
public static void main(String args[]){
int highest=0, lowest=0, num=0;
Scanner scan = new Scanner(System.in);
highest = lowest = scan.nextInt();
for(int i=1; i<10; i++){
System.out.print("Enter a number:");
num = scan.nextInt();
if (num > highest){
highest = num;
}
if(num < lowest){
lowest = num;
}
System.out.println("Highest number is: " + highest);
System.out.println("Lowest number is: " + lowest);
}
}
}