Java-继续游戏
我做了一些命令行游戏,在游戏结束时我想问玩家是否还想玩。你可以在代码中看到我是如何制作的,但它不起作用,我不知道为什么 有人能帮我吗Java-继续游戏,java,loops,Java,Loops,我做了一些命令行游戏,在游戏结束时我想问玩家是否还想玩。你可以在代码中看到我是如何制作的,但它不起作用,我不知道为什么 有人能帮我吗 import java.util.Scanner; //WIP public class GuessingGame2 { static Scanner userInput = new Scanner(System.in); static int randNumber; static int guessNumber; static
import java.util.Scanner;
//WIP
public class GuessingGame2 {
static Scanner userInput = new Scanner(System.in);
static int randNumber;
static int guessNumber;
static boolean gameStatus;
static void checkNum(int x) {
guessNumber++;
if(x == randNumber) {
gameStatus = true;
} else if(x < randNumber) {
System.out.println("Too small!");
} else {
System.out.println("Too big!");
}
}
static void checkAnsw() {
if(userInput.hasNextLine()) {
if(userInput.nextLine() == "Y" || userInput.nextLine() == "y") {
guessGame();
} else if(userInput.nextLine() == "N" || userInput.nextLine() == "n") {
} else {
System.out.print("Y or N ");
checkAnsw();
}
} else {
System.out.print("Y or N ");
userInput.next();
checkAnsw();
}
}
static void guessGame() {
randNumber = (int) (Math.random() * 1000);
guessNumber = 0;
gameStatus = false;
System.out.println("Try to guess a number from 1 to 1000!");
while(gameStatus == false) {
System.out.print("Your guess: ");
if(userInput.hasNextInt()) {
checkNum(userInput.nextInt());
} else {
System.out.println("You need to choose a number!");
userInput.next();
}
}
System.out.println("You guessed the number in " + guessNumber + " tries.");
System.out.print("Do you want to play again? Y or N ");
checkAnsw();
}
public static void main(String[] args) {
guessGame();
}
}
import java.util.Scanner;
//在制品
公开课猜谜游戏2{
静态扫描仪用户输入=新扫描仪(System.in);
静态整数;
静态整数;
静态布尔博弈状态;
静态void checkNum(int x){
猜数++;
如果(x==随机数){
gameStatus=true;
}else if(x
您的代码运行良好,我已在Eclipse中复制并粘贴了它,以下是输出:
Try to guess a number from 1 to 1000!
Your guess: eeeee
You need to choose a number!
Your guess: 1
Too small!
Your guess: 2
Too small!
Your guess: 2
我不明白哪一个是您的问题,请尝试更好地解释将您的
checkAnsw
方法更改为:
static void checkAnsw() {
if(userInput.hasNextLine()) {
if(userInput.nextLine().equalsIgnoreCase("y")) {
guessGame();
} else if(userInput.nextLine().equalsIgnoreCase("n")) {
} else {
System.out.print("Y or N ");
checkAnsw();
}
} else {
System.out.print("Y or N ");
userInput.next();
checkAnsw();
}
}
不能将字符串与
=
进行比较,因为它们是对象。使用.equals
方法比较字符串。字符串比较错误。同时尝试改变你的设计。由于在checkAnsw()
和guessGame()
@Codebender之间的代码中存在递归,因此可能会出现堆栈溢出错误!考虑到编码风格和游戏本身(顺便说一句,看起来很有趣!),我猜这家伙是个编码新手。让他有这个-StackOverflow和其他问题可以稍后解决:-)@adelphus我想你忘记了StackOverflow的意义。这实际上应该因为脱离主题(请求调试帮助)而关闭。问题不在于游戏何时开始,而在于游戏何时结束,您需要选择是否继续。这仍然有一个递归问题,但正越来越接近OP可能想要的。向上投票,没错。如果OP的要求允许,最好将guessGame
方法替换为main
中的一个循环,该循环也可以执行相同的操作。