2013-10-31 80 views
-2
int min, max; 

Scanner s = new Scanner(System.in); 
System.out.print("Enter a Value: "); 
int val = s.nextInt(); 
min = max = val; 

while (val != 0) { 
    System.out.print("Enter a Value: "); 
    val = s.nextInt(); 
    if (val < min) { 
     min = val; 
    } 
    if (val > max) { 
    max = val; 
    } 
}; 
System.out.println("Min: " + min); 
System.out.println("Max: " + max); 
    } 
} 

首先,這是一個重複的問題,我真的需要一個答案,但沒有人回答另一個問題,因爲它是舊的。這就是說;Java - 最小和最大值

我應該創建的程序應該使用無限數量的值,直到輸入0,然後顯示輸入的最小值和最大值。我現在設置的方式,最小的總是0.我需要找出一種方法,以某種方式忽略0作爲最小的數字,得到下一個最小的數字。有任何想法嗎?

+1

必須是班級作業。這已經出現在今天 - http://stackoverflow.com/q/19671453/2864740 – user2864740

+0

它是。對不起,我真的需要完成這個工作,謝謝! – user2934299

+0

噢,*您*也提出了其他問題。請*更改標題*以反映實際問題。無論如何,只要在輸入'0'時執行最小/最大邏輯之前*停止循環*(例如用'break')*。或者,在最小 - 最大邏輯周圍使用一個保護('if'),以便當輸入的值爲'0'時跳過並讓循環結束通過正常終止條件。 – user2864740

回答

0

如何補充說,你的循環條件完全一樣,你說是嗎?

while (val != 0) { 
    System.out.print("Enter a Value: "); 
    val = s.nextInt(); 
    if (val != 0) { 
     if (val < min) { 
      min = val; 
     } 
     if (val > max) { 
      max = val; 
     } 
    } else { 
     break; 
    } 
} 
+0

謝謝!------------- – user2934299

+0

@ user2934299沒問題......也許接受這個,或者是另一個答案,因爲它們幾乎都是相同的,如果它作爲你的答案嗎? –

+1

是的,我會接受一個,但必須等待5分鐘。 – user2934299

0

變化:

if (val < min) { 
     min = val; 
    } 

到:

if ((val < min) && (val != 0)) { 
     min = val; 
    } 
+0

哇,不能相信我沒有想到,謝謝! – user2934299

+0

@ user2934299歡迎 – CloudyMarble

+0

@ user2934299您可能需要檢查最大值是否爲零。 – CloudyMarble

0

你需要改變條件如下,它應該工作。

if (val < min && val>0) { 
      min = val; 
     } 
2

這是一種做法。

while (true) { 
    System.out.print("Enter a Value: "); 
    val = s.nextInt(); 

    // stop the loop when 0 is entered (prevent min/max calculations) 
    if(val == 0) 
    break; 

    if (val < min) 
    min = val; 
    if (val > max) 
    max = val; 
} 
+2

我喜歡在這裏使用'break'。這是令人驚訝的,因爲我很少使用它。 – user2864740