找到两个最小值输入

时间:2015-10-19 00:00:39

标签: java algorithm

说明如下:"按此顺序询问用户以下信息:

  • 终止值(实数)。用户稍后将再次输入此值,以表明他或她已完成提供输入。
  • 一系列实数。继续询问数字,直到输入终止值。
  • 按此顺序计算并输出最小和第二小的实数。最小和最小的数字可能是相同的(如果序列包含重复的数字)。"

我上传了我的代码,评分软件给了我一个零,说程序与作业不一致,但是,在测试我的代码时,它只是按照作业的要求运行。任何关于为什么会发生这种情况的反馈都将不胜感激。

这是我的代码:

public class TwoSmallest
    {
    public static void main (String[] args)
    {
        double terminator;
        System.out.print ("Please enter a terminating value: ");
        terminator = IO.readDouble();

        double lowest1;
        double lowest2;
        System.out.println("Please enter sequence of numbers:");
        lowest1 = IO.readDouble();
        while (lowest1 == terminator)
        {
            IO.reportBadInput();
            lowest1 = IO.readDouble();
        }
        lowest2 = IO.readDouble();
        while (lowest2 == terminator)
        {
            IO.reportBadInput();
            lowest2 = IO.readDouble();
        }
        double input;
        do
        {
            input = IO.readDouble();
            if (input < lowest1)
            {
                if(lowest2 < lowest1)
                    lowest2 = lowest1;
                lowest1 = input;
            }
            else if (input < lowest2)
                lowest2 = input;
        }while (input != terminator);

        System.out.println("RESULT: " + lowest1);
        System.out.println("RESULT: " + lowest2);
    }
}

1 个答案:

答案 0 :(得分:0)

以下是您的解决方案未处理的两种情况:

假设你给出了数字序列3,7,1,你的代码的结果是1和7而不是1和3。 这是因为当输入&lt;时,你没有改变最低2的值。 lowest1。

如果你的输入是3,1,7,其中第一个数字是最低1,第二个数字是最低2然后输入变量值是7然后条件(输入&lt; lowest1)是假的,所以不会交换最低1和最低2个值,结果将是3和1而不是1和3。