已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
2天前关闭。
Improve this question
我正在创建一个数字猜谜游戏,但遇到了以下问题(做,while)循环。用户将输入他们的猜测,程序将告诉他们他们的猜测是太高还是太低。如果猜测不在1和100之间,程序将提示一条消息,说只有1和100之间的数字是有效的,并且不会计入他们有限的尝试次数。代码需要使用嵌套循环。
我还没有开始工作的部分是当用户猜测正确的数字,程序打印他们的分数,或者如果他们已经用完或尝试。我如何让打印语句在用户猜测正确答案时打印?
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
boolean keepPlaying = true;
System.out.println("Play Guessing Game");
int tryCount = 0;
int counter = 9;
while (keepPlaying) {
boolean validInput;
int number, playerGuess;
number = (int) (Math.random() * 100) + 1;
System.out.print("\nim thinking of a number between 1 and 100");
System.out.println();
do {
playerGuess = sc.nextInt();
if ((playerGuess < 1) || (playerGuess > 100)) {
System.out.println("Only numbers between 1 and 100 ");
} else if (number > playerGuess && tryCount < (9)) {
System.out.println(" Guess higher " + " you have " + (counter) + " attempts");
tryCount++;
counter--;
} else if (number < playerGuess && tryCount < (9)) {
System.out.println(" Guess lower " + " you have " + (counter - 1) + " attempts");
tryCount++;
counter--;
} else if (number < playerGuess && tryCount == (9)) {
System.out.println("Guess lower" + " you have " + (counter - 1) + " attempt ");
tryCount++;
counter--;
} else if (number > playerGuess && tryCount == (9)) {
System.out.println("Guess higher" + " you have " + (counter - 1) + " attempt ");
tryCount++;
counter--;
}
} while (playerGuess == number);
{
if (number == playerGuess) {
System.out.println("win");
}
}
}
}
}
2条答案
按热度按时间ev7lccsx1#
Grzeskowiak先生的回答是正确的。我所能补充的是,你应该验证用户的输入。
validInput
不会总是正确的,特别是如果你考虑到用户可以很容易地输入1.0(双精度)或单词“seven”(字符串),这两个都不是整数。mklgxw1f2#
这段代码中有很多错误,让我们逐一检查一下。
上面的代码行实际上在用户还没有猜到任何东西之前就将
1
赋值为tryCount
。x一个一个一个一个x一个一个二个x
我不确定这个变量的意思是什么,因为它的名字没有表达它的意思。它是一个可以倒计时的最大允许尝试次数计数器吗?
在这种情况下,您可能需要将其更改为
一个三个三个一个
这个程序块将无限运行,因为你在每次循环迭代中都将值设置为
false
,第一次赋值true
是多余的。我不知道你到底想做什么,所以我不能推荐任何更正,对不起。它是用来告诉用户输入的是一个数字,还是正确的数字是猜测出来的?
这里有一个double条件,第二个条件只有在第一个条件为真时才会运行,因此第二个
playerGuess == number
是完全冗余的。另外,
(2)
中的括号不起任何作用,您可以只写2
。整个条件都在
if
中,if
询问玩家是否已经猜到了数字。在代码中的这一点上,猜到的数字总是正确的,所以这个条件总是false。您可能需要将这个和所有其他检查数字是否太高或太低的else
块放在外部if
块中。在开始编程时,用伪代码写出核心逻辑往往是值得的。我也建议先把它分解成一个简单的一次猜测游戏,然后再尝试把它变成一个多次猜测游戏。下面是一个简化的一次尝试游戏的例子:
一旦你让那部分工作了,你可以试着添加一个循环并计算尝试次数。