2015-10-19 66 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.