2013-10-31 261 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