我是Java的新手并且有一个问题。我的程序是一个简单的计算机猜谜游戏。如果你猜对了,那么你的积分会向上移动1.如果猜错了,那么你的积分会减少1.如果你得到7或0,那么你输赢。你能帮我理解为什么它不会循环回到while语句的起始位置吗? 谢谢!
import java.util.Random;
import java.util.Scanner;
import java.lang.Math;
import java.io.*;
class RandomGame {
public static void main(String str[]) throws IOException {
Scanner scan = new Scanner(System.in);
String userAns = new String();
Random generator = new Random();
int guess, num, points = 0;
System.out.println("Hello...");
try {
Thread.sleep(1500);
} catch (InterruptedException ex) {
}
System.out.println("Would you consider playing a fun game?");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
userAns = scan.next();
// if/else about whether they want to play the game**********
if (userAns.equals("yes")) {
System.out.println("Awww yeah lets get going!");
System.out
.println("Objective of the game:\n1.Guess numbers out of 5\n2."
+ "If you guess incorrect you get points reduced.\n3.Have fun!");
try {
Thread.sleep(5500);
} catch (InterruptedException ex) {
}
System.out.println("\nReady?");
userAns = scan.next();
if (userAns.equals("yes")) {
System.out.println("Okay! Here we go!");
// COUNTDOWN************************************
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
System.out.println("3");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
System.out.println("2");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
System.out.println("1");
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
// *****************************************************
System.out.println("Please enter a integer 1-5 to start the game.");
guess = scan.nextInt();
num = generator.nextInt(5) + 1;
while (points <= 7 && points >= 0)
{
if (guess == num) {
System.out.println("Correct! You gained 1 point!");
points++;
System.out.println(points);
} else if (guess != num) {
System.out.println("Incorrect. You lose 1 point.");
points--;
}
}
}
else if (userAns.equals("no")) {
System.out.println("GAMEOVER.\n\n\nHint: say \"yes\"");
}
else {
System.out.print("yes or no answers please.");
}
}
}
答案 0 :(得分:1)
你的代码会循环回到while循环开始的地方,它只是在下一个猜测中没有读取,因为你从用户输入的读取是在循环之外。这两行必须在循环内
guess = scan.nextInt();
num = generator.nextInt(5) + 1;
目前,您的代码读入一个int并生成一个。如果猜测正确,你将获得7分然后获胜,如果错误你将立即失去
答案 1 :(得分:1)
如果你第一次得到错误答案,你的积分将变为-1。
while (points <= 7 && points >= 0)
检查范围仅在0到7之间,因此它退出循环
答案 2 :(得分:1)
你的while
循环不会等待nextInt()
,所以循环只是根据第一个猜测增加或减少。要解决这个问题,请在进行计算之前等待下一个输入,然后在循环中进行计算:
while ((points <= 7 && points >= 0) && scan.hasNext()) {
// we have an input value
guess = scan.nextInt();
num = generator.nextInt(5) + 1;
}
答案 3 :(得分:0)
在while循环中输入用户输入
while (points <= 7 && points >= 0)
{
guess = scan.nextInt();
num = generator.nextInt(5) + 1;
// continue
}