![](/img/trans.png)
[英]Why does the do-while loop not run as expected in this Java program?
[英]Quit program without additional messages in do-while loop - Java
我的代碼適用於它應該做的事情,
do {
System.out.print("Type a number (or -1 to stop): ");
num = console.nextInt();
if(num == -1)
break;
if (num < min){
min = num;
}
if(num > max){
max = num;
}
} while (true);
System.out.println("Maximum was " + max);
System.out.println("Minimum was " + min);
除了當 -1 是第一件事輸入時。 如果在結果是這樣之前輸入 -1 沒有其他內容:
Type a number (or -1 to stop): -1
Maximum was -2147483648
Minimum was 2147483647
什么時候應該:
Type a number (or -1 to stop): -1
如果沒有在每個循環中打印 max 和 min ,我不知道該怎么做,這使得代碼不適合一般使用。
最簡單的方法(就現有代碼的更改而言)是將System.out.println
語句包裝在條件中:
if (max >= min) {
System.out.println("Maximum was " + max);
System.out.println("Minimum was " + min);
}
這是有效的,因為只有在循環體至少執行一次時,條件才會為真。
替代條件可能包括:
if (max.= Integer.MIN_VALUE)
(或者你初始化它的任何東西)if (min.= Integer.MAX_VALUE)
(同上初始化)if (min.= Integer.MAX_VALUE && max != Integer.MIN_VALUE)
和許多其他人。 但我認為只檢查max >= min
是最整潔的。
您需要保留一個計數器來知道,至少已經給出了一個有效的輸入。
int counter = 0;
do {
System.out.print("Type a number (or -1 to stop): ");
num = console.nextInt();
if(num == -1)
break;
if (num < min){
min = num;
}
if(num > max){
max = num;
}
counter++;
} while (true);
if (counter != 0) {
System.out.println("Maximum was " + max);
System.out.println("Minimum was " + min);
}
如果計數器保持為 0,則在結束循環后您知道沒有給出有效輸入,因此您不打印最大值、最小值
只需為您的打印條件添加一個 if :
if (min!=-2147483648 && max!=2147483647) {
System.out.println("Maximum was " + max);
System.out.println("Minimum was " + min);
}
這不是正確的方式,但它是我認為最快的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.