数字列表中最小和最小的数字

时间:2015-06-17 22:48:16

标签: java

问题2 将您的程序写在TwoSmall.java文件中。

输入一组正整数,以-1结尾作为哨兵。按此顺序打印这些数字中的最小和第二小数。

您可以假设在-1之前总是至少有两个数字;你不必检查这是真的。

public class TwoSmall{

    public static void main(String [] args){
        int min;
        int secondMin;
        int sentinel = -1;

        System.out.println("Enter atleast two numbers");    
        int input = IO.readInt();

        min = input;
        secondMin = input;

        do{

                if(input < min){
                    secondMin = min; 
                    min = input;
                }

                else if (input < secondMin) {
                    secondMin = input; 
                }
                input = IO.readInt();
            } while(input!=sentinel);

            System.out.println(min);
            System.out.println(secondMin);
    }

}

这不行?有人能告诉我这个程序有什么问题吗?

1 个答案:

答案 0 :(得分:2)

这是因为您将minsecondMin都设置为等于第一个输入的值。除非输入的数字小于该值,否则您将遇到问题。尝试分别阅读这两个数字。

min = IO.readInt();
secondMin = IO.readInt();

另外,重新考虑你的逻辑。你可能会得到一个倒退的结果。解决此问题的一种方法是读取前两个整数,然后相应地将它们分配给minsecondMin。否则,如果用户输入4,3,2 - 结果将表示3是最低的,而2是第二低 - 这是不正确的。

@vandale提到的另一个选择是将它们初始化为INTEGER.MAX_VALUE。如果您这样做,则无需读取minsecondMin的初始值。