2015-10-19 67 views
0

的说明是:“要求用户提供以下信息,顺序如下:。找到两个最小的值输入

  • 一个结尾值(实数)用户将稍后再输入该值,指示表示已完成输入
  • 实数序列继续询问数字,直到输入终止值
  • 计算并输出最小和次小的实数,依次为最小和次最小数字可能相同(如果序列包含重复数字)。“

我上传了我的代码,分级软件给了我一个零,说程序与赋值不一致,但是,当测试我的代码时,它的运行正如分配所需的那样。任何反馈,为什么这可能发生,将不胜感激。

这是我的代码:

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); 
    } 
} 
+0

如果你认为他错了,你可以直接作为他吗? –

+2

您正在处理终止符值。此外,如果输入以2,1开头,则将分配2作为最低数字,将1作为第二低数字。并且保证在终结者前至少输入2个数字? – Cinnam

+0

由于Cinnam指出的缺陷,您最好将所有输入值存储在一个数组中,然后在打印之前计算两个最小的数字。 – RobertR

回答

0

这里有两个方案未通过您的解决方案来处理:

对于假设你已经给数3,7,11-结果的顺序你的代码是1和7不是1和3. 这是因为当输入<最低1时,你没有改变最低2值。

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