最小和最大的数字

时间:2017-03-04 02:44:41

标签: java loops if-statement

好的,我知道有几个线程有类似的问题,但我似乎无法找到我的问题的答案。其他人都和我做同样的事情,但他们的代码有效:

下面是期望的输出:

How many numbers do you want to enter?
4
Enter a number:5
Enter a number:11
Enter a number:-2
Enter a number:3
Highest number is: 11
Lowest number is: -2

这是我的代码:

public static void smallestLargest(){
    int highest=Integer.MIN_VALUE;
    int lowest=Integer.MAX_VALUE;
    int num=0;
    Scanner sL = new Scanner(System.in);
    System.out.println("How many numbers do you want to enter?");
    int nums = sL.nextInt();
    for(int i=0; i<nums; i++){
        System.out.print("Enter a number:");
        num = sL.nextInt();
    }
    if (num > highest){
        num = highest;
    }
    if(num < lowest){
        num = lowest;
    }
    System.out.println("Highest number is: " + highest);
    System.out.println("Lowest number is: " + lowest);

}

下面是我得到的输出:

How many numbers do you want to enter?
4
Enter a number:5
Enter a number:11
Enter a number:-2
Enter a number:3
Highest number is: -2147483648
Lowest number is: 2147483647

我让我的朋友在团队观察者试图帮助,因为他比我更好,但我们两个都很难过。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

而不是num = highest,您应该highest = num

同样的事情是最低的。

if&#39}应位于for循环内(必须为输入的每个数字执行此操作)

答案 1 :(得分:1)

尝试并阅读您的程序流程。基本上,您希望一次读取一个Int,然后确定您读取的数字是您目前为止看到的最高数字还是最低数字。

你的条件分支应该在你的for循环中。

for(...) {
    //read value
    //if num > highest, then highest = num
    //if num < lowest, then lowest = num
}
//print output, etc. 

答案 2 :(得分:0)

您的代码存在的问题就在这里。

if (num > highest){
    num = highest;
}
if(num < lowest){
    num = lowest;
}

如果if(num> gtigh)为真,则将num设置为最高。你真正想做的是

if (num > highest){
    highest = num;
}
if(num < lowest){
    lowest = num;
}

现在将设置为最低和最高为正确的数字。但是,您还需要在代码中设置一个循环,以检查每次用户输入数字时是否需要更新最高和最低要求。以下代码将为您提供正确的输出。

for(int i=0; i<nums; i++){
    System.out.print("Enter a number:");
    num = sL.nextInt();

    if (num > highest){
        highest = num;
    }
    if(num < lowest){
        lowest = num;
    }
}