java - Java 中的无限 do/while 循环。请指教
问题描述
我是新来的,一般都是编码的。我想要完成的是创建一个简单的猜谜游戏,提示用户输入一个数字,并将该数字与计算机生成的 1 到 100 之间的数字进行核对。我试图让它让玩家可以继续猜测,直到他们得到正确的答案,并显示一个计数器让玩家知道他们做了多少次猜测尝试。问题是,给出正确答案后程序不会终止,我不知道我做错了什么。我将整个代码粘贴在底部以供参考,但我觉得问题出在“determineAnswer”方法中的以下语句中:
} 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;
}
}
解决方案
您不更新成功的值,每次循环运行时,它都会将成功值设为 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);
推荐阅读
- python - 将一个 NumPy 数组合并到具有相同数量值的新 NumPy 数组中
- docker - docker-entrypoint 以正常关闭方式执行 jboss
- vue.js - Vue.js 根据 v-model 值更改文本输入的占位符
- javascript - 如何让 Switch 组件在值改变之前不移动 - React Native
- jquery - 使用 jquery 获取 Bootstrap-select 选项的值
- java - Kafka 消费者不返回任何记录
- c# - Xamaring IOS:使用哪个 UI 元素来显示图像网格?
- php - 无法从 PHP imagick 生成 svg 到 pdf
- javascript - Dragula开始拖动长按事件
- c# - DotNet Core Xunit 总是去 Catchblock