在循环中查找最低奇数

时间:2014-01-08 11:44:44

标签: java

我知道这段代码错了。我是初学者,所以请耐心等待。

我需要找到最低的奇数,但无论输入什么数字,它都会保持为零。我需要初始化'最低',但我如何/在哪里初始化它?

最低= 0导致问题,但我不确定在哪里初始化最低

class Odd

{
    public static void main(String[] args)
    {
        int number; //the number entered by the user
        int input; //the amount of numbers to be entered by the user
        int index;
        int lowest = 0; //lowest odd number

        System.out.println("How many numbers? ");
        input = EasyIn.getInt();

    for (index = 1; index <= input ; index ++) 
        {
            System.out.println("Enter number " + index + ":" );
            number = EasyIn.getInt();

            if ((number % 2 == 1) && (number < lowest)) 
            {
                lowest = number;    
            }

        }

    System.out.println("The lowest odd number entered was " + lowest);

    }
}

3 个答案:

答案 0 :(得分:6)

如果您确定输入不为空,则解决方案是将lowest初始化为big enough value

int lowest = Integer.MAX_VALUE;

这种方式所有值都会更小,因此lowest将是您输入的值之一。

答案 1 :(得分:4)

您从0开始,因此您不会获得更大的值。如果你这样开始

int lowest = Integer.MAX_VALUE;

对于正数,(n%2)也只有1。如果您想测试您想要的奇数负数(n & 1) != 0


注意:Integer.MAX_VALUE是一个奇数,所以即使这是唯一的值,它也是最大值。但是,如果您希望能够区分输入此值的某个值与没有奇数值之间的区别,则可以使用此值。

long lowest = Long.MAX_VALUE;

这将允许您区分输入的Integer.MAX_VALUE与没有值之间的区别,因为Long.MAX_VALUE要高得多。

答案 2 :(得分:1)

您将最低值初始化为0,然后查找低于它的数字(和奇数)。

我将其初始化为EasyIn.getInt(),因此它是列表中要检查的第一个数字。