簡體   English   中英

在 do-while 循環中退出程序而沒有其他消息 - Java

[英]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)
  • 當您輸入非 -1 的值時,您在循環內設置的涉及 boolean 標志的內容

和許多其他人。 但我認為只檢查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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM