Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-继续游戏_Java_Loops - Fatal编程技术网

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
中的一个循环,该循环也可以执行相同的操作。