if 语句 - 我如何在这个 Java 程序中获取我的逻辑以使我的循环工作



我做了这个java程序来查找用户输入的两个最小的整数。我想我差不多就在那里,除了我的逻辑有一个问题。我不确定要设置什么值:

   int min, min2;

到我的程序的其余部分将在哪里工作。我已经尝试了 -1 和 0,它最终会作为我最小和第二小的出现。

public class TwoSmall
{
    public static void main(String[] args)
    {
    int input;
    System.out.println("Enter you numbers: ");
    input = IO.readInt();
    int min = 0;
    int min2 = 0;
    while (input >= 0)
    {
        if (input < min)
        {
            min2 = min;
            min = input;
        }
        else if (input < min2)
        {
            min2 = input;
        }
        input = IO.readInt();
    }
    System.out.println("The lowest number was " + min 
                         + " and the second lowest is " + min2);

    }
}

尝试将minmin2设置为 Integer.MAX_VALUE 。实际上,这应该可以解决您的问题,因为您正在使用的整数的数据类型是 int 。但从理论上讲,将minmin2设置为第一个输入值是正确的解决方案。

编辑:事实上,我看到您单独输入了第一个值。因此,正确的解决方案如下:

public class TwoSmall
{
    public static void main(String[] args)
    {
        int input;
        System.out.println("Enter you numbers: ");
        input = IO.readInt();
        int min = input;
        int min2 = input;
        while (input >= 0)
        {
            numInputsGreaterThan1 = true;
            if (input < min)
            {
                min2 = min;
                min = input;
            }
            else if (input < min2)
            {
                min2 = input;
            }
            input = IO.readInt();
        }
        System.out.println("The lowest number was " + min 
                         + " and the second lowest is " + min2);
     }
}

请注意,如果只输入一个整数,则min和打印min2的值将相同。

最新更新