java - Java 中的无限 do/while 循环。请指教

标签 java loops do-while

我是新来的,一般来说都是编码。我想要完成的是创建一个简单的猜谜游戏,提示用户输入一个数字,并将该数字与计算机生成的 1 到 100 之间的数字进行检查。我尝试这样做,以便玩家可以继续猜测,直到他们会得到正确的答案,并显示一个计数器,让玩家知道他们进行了多少次猜测尝试。问题是,给出正确答案后程序不会终止,而且我不知道我做错了什么。我将整个代码粘贴在底部以供引用,但我觉得问题出在“defineAnswer”方法中的以下语句中:

} else if (userAnswer == computerNumber) {
        message = "Correct"
                + "\nNumber of Guesses: " + count;
        success++;

我试图使用整数“成功”的值作为终止 do/while 循环的条件,但即使我尝试增加该值,循环仍会继续,就像该值正在被不断重置一样。如果是这样的话,我看不出我哪里出了问题。再说一遍,我对此还很陌生,但我会很感激任何意见。

import javax.swing.JOptionPane;

public class GuessingGame {

    public static void main(String[] args) {
        // generate a random number from 1 to 100
        int computerNumber = (int) (Math.random() * 100 + 1);
        // declare other variables
        int success = 0;
        int count = 0;
        // display the correct guess for testing purposes
        System.out.println("The correct guess would be " + computerNumber);
        // prompt user for a guess
        do {           
            count++;
            String response = JOptionPane.showInputDialog(null,
                    "Enter a guess between 1 and 100");
            int userAnswer = Integer.parseInt(response);
            // display result
            JOptionPane.showMessageDialog(null, determineGuess(userAnswer, computerNumber, success, count));
        } while (success == 0);

    }

    public static String determineGuess(int userAnswer, int computerNumber,int success, int count) {
        String message = null;        
        if (userAnswer <= 0 || userAnswer > 100) {
            message = "Invalid guess"
                    + "\nNumber of Guesses: " + count;
        } else if (userAnswer == computerNumber) {
            message = "Correct"
                    + "\nNumber of Guesses: " + count;
            success++;
        } else if (userAnswer > computerNumber) {
            message = "Incorrect, Too High"
                    + "\nNumber of Guesses: " + count;
        } else if (userAnswer < computerNumber) {
            message = "Incorrect, Too Low"
                    + "\nNumber of Guesses: " + count;
        }
        return message;
    }
}

最佳答案

您没有更新 success 的值,每次循环运行时,它都会将 success 值设为 0,从而导致无限循环。

int success = 0;
    int count = 0;
    // display the correct guess for testing purposes
    System.out.println("The correct guess would be " + computerNumber);
    // prompt user for a guess
    do {           
        count++;
        String response = JOptionPane.showInputDialog(null,
                "Enter a guess between 1 and 100");
        int userAnswer = Integer.parseInt(response);
        // display result
        JOptionPane.showMessageDialog(null, determineGuess(userAnswer, computerNumber, success, count));
success=1;
    } while (success == 0);

关于java - Java 中的无限 do/while 循环。请指教,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477590/

相关文章:

Java - 登录网站以检索数据

java - Java 文件读取有什么问题?

java - 如何创建一个包含 1000 个随机生成的整数的数组?

python - 使用 BeautifulSoup 从未知数量的页面中抓取数据

c - ')' token C 之前应为 ';'

java - 反转通用列表?

python - 请对我的示例 Python 程序进行代码审查

java - 为什么我的标志总是被设置为 false?

c++ - 如何在 C++ 中使用带有 'do while' 循环的计数器?

c - 使用 SINGLE do-while 循环确定质数