如何在此Java程序中获取逻辑以使循环工作?

时间:2015-06-17 02:03:14

标签: java if-statement while-loop int logic

我已经使这个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);



    }
}

1 个答案:

答案 0 :(得分:1)

尝试将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);
     }
}

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