2016-10-23 42 views
1

我創建的程序確定最大和最小的數字是用戶輸入的一系列數字。我爲我的代碼創建了幾個測試用例,它們都可以正常工作,但它並不能完成最簡單的測試用例。當用戶輸入單個號碼時。例如,如果用戶將終止值設置爲25,則輸入-1,最後輸入終止值,輸出應爲 最大值:-1和最小值:-1。然而,我的代碼將輸出最大:0和最小:-1 - 我爲什麼會發生這種情況(因爲我在運行循環之前將最大值初始化爲0),但我該如何解決這個問題?如何通過這個測試用例?

這裏是我的代碼...

Scanner scan = new Scanner(System.in); 

    // Declaration variables 
    double min; 
    double max = 0; 

    System.out.println("Enter terminating number: "); 
    double terminator = scan.nextDouble(); 

    System.out.println("Enter a number: "); 
    double num = scan.nextDouble(); 
    min = num; 

    if (num == terminator) { 
     System.out.println("There must be one number in the list."); 
     // break; 
    } else { 
     while (num != terminator) { 
      System.out.println(""); 
      num = scan.nextDouble(); 

      if ((num < min) && (num != terminator)) { 
       double temp = min; 
       min = num; 
       max = temp; 
      } else if ((num > min) && (num != terminator)) { 
       max = num; 
      } else { 
       max = min; 
      } 
     } 
     System.out.println("Largest: " + max); 
     System.out.println("Smallest: " + min); 
    } 
+0

'max'應該是'Double.MIN_VALUE' ...和'min = Double.MAX_VALUE' – Charles

+0

將最大值初始化爲非常小的數字,即'Double.MIN_VALUE',最小值爲非常大的數字,即'Double.MAX_VALUE ' –

+0

@ c650我認爲你的意思完全相反 - max應該是'Double.MIN_VALUE',min應該是'Double.MAX_VALUE' –

回答

1

而是初始化max = 0的,做max = num就像你已經與min做。

不清楚你爲什麼初始化maxmin不同,當輸入單個號碼時,它既是最小值也是最大值。現在,修改max的唯一代碼位於讀取超出第一個數字的循環內,因此第一個數字對它沒有影響。

+0

好吧,這使得一噸的感覺。此外,它不會影響用戶輸入多個數字的其他測試用例。謝謝! – Construct0r

+0

您有影響其他數字序列的錯誤,順便說一句:嘗試2,1,1和2,1,0,1作爲測試用例。並且請注意,在所有情況下,您的if/else邏輯都會爲'max'指定一個新值,但從不會實際檢查是否存在'num> max'。 – Wyzard

+0

我在else if語句中添加了(num> max)。 – Construct0r

相關問題