簡體   English   中英

如何讓我的 while 循環正確運行?

[英]How can I make my while loop run correctly?

我的代碼應該要求用戶輸入 1 到 10 之間的數字。如果他們輸入 1 到 10 之間的數字,那么它會說謝謝並在那里結束。 如果沒有,它應該循環並說,請輸入 1 到 10 之間的數字,然后再試一次。 然后它將再次讓用戶輸入。 我的問題是,在第二次輸入后,即使他們第二次輸入不正確,它也會自動結束循環。 順便說一下,我對編碼很陌生,所以請 go 在評論中對我放輕松 XD。 哪位大佬幫忙看看,謝謝這是我的代碼:

import javax.swing.*;

public class LoopLecture {
    public static void main(String[] args) {
        int MIN = 1;
        int MAX = 10;
        String rating;
        rating = JOptionPane.showInputDialog(null, "Please enter your rating of Krabbypatties on a scale of" 
                + MIN + "to" + MAX + ".With" + MIN + "meaning youhated it and" + MAX + "meaning you loved it.");
        int rating2 = Integer.parseInt(rating);
        while (rating2 < MIN || rating2 > MAX) {
            JOptionPane.showMessageDialog(null, "You must enter a value between " + MIN + "and" + MAX + ".");
                    JOptionPane.showMessageDialog(null, "Please try again.");
            rating = JOptionPane.showInputDialog(null, "Please enter your rating of Krabbypatties on a scale of" 
                    + MIN + "to" + MAX + ".With" + MIN + "meaning youhated it and" + MAX + "meaning you loved it.");
            if (rating2 >= MIN && rating2 <= MAX)
                break;
        }
        JOptionPane.showMessageDialog(null, "Thank you!");
    }
}

在 for 循環中嘗試將新值分配給 rating2

rating = JOptionPane.showInputDialog(null, "請輸入您對 Krabby 的評分


rating2 = JOptionPane.showInputDialog(null, "請輸入您對 Krabby 的評分

while (true) { // creates infinite while loop


break; // ends an infinite loop


}

break; 表達式在你的 if 語句中,所以我相信你明白它是如何工作的,但試着讓循環無限,如上所示。

更好地解決它:

  1. 在循環rating2評級解析為rating 2
  2. 如果數字在 1 到 10 之間則中斷
  3. 捕獲NumberFormatException ,什么都不用做,忽略它
public static void main(String[] args) {
    int MIN = 1;
    int MAX = 10;
    String rating = JOptionPane.showInputDialog(null, "Please enter your rating of Krabbypatties on a scale of"
            + MIN + "to" + MAX + ".With" + MIN + "meaning youhated it and" + MAX + "meaning you loved it.");
    while (true) {
        try {
            int rating2 = Integer.parseInt(rating);
            if (rating2 >= MIN && rating2 <= MAX) {
                break;
            }
        } catch (NumberFormatException ignored) {
        }
        JOptionPane.showMessageDialog(null, "You must enter a value between " + MIN + "and" + MAX + ".");
        JOptionPane.showMessageDialog(null, "Please try again.");
        rating = JOptionPane.showInputDialog(null, "Please enter your rating of Krabbypatties on a scale of"
                + MIN + "to" + MAX + ".With" + MIN + "meaning youhated it and" + MAX + "meaning you loved it.");
    }
    JOptionPane.showMessageDialog(null, "Thank you!");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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