用While循环猜猜游戏

时间:2014-10-26 20:38:01

标签: java game-engine

我正在尝试为我的程序创建一个while循环,一个Guessing游戏。我已经设置好了,所以用户可以创建一个最大值,即1-500,然后用户可以继续猜测数字。当数字被猜到时,用户可以按1,关闭,其他任何内容再次继续运行循环。

我的问题是,代码在尝试继续循环时给出了错误,没有编译错误

这是我的代码:

import java.util.Random;
import java.util.Scanner;
public class Gættespil2
{
    public static void main(String[] args)
    {
        Random rand = new Random();
        int TAL = rand.nextInt(20) + 1;
        int FORSØG = 0;
        Scanner input = new Scanner (System.in);
        int guess;
        int loft;
        boolean win = false;

        boolean keepPlaying = true;
        while ( keepPlaying )
        {
            Scanner tastatur = new Scanner(System.in);
            System.out.print("Indsæt loftets højeste værdi : ");
            loft = tastatur.nextInt();
            TAL = (int) (Math.random() * loft + 1);

            while (win == false) 
            {

                System.out.println(" Gæt et tal mellem 1 og  "+ loft + "):: ");
                guess = input.nextInt();
                FORSØG++;
                if (guess == TAL) 
                {

                    win = true;
                }
                else if (guess < TAL) 
                {
                    System.out.println("Koldere, gæt igen");
                }
                else if (guess > TAL) {
                    System.out.println("Varmere, Gæt igen!!");
                }
            }
            System.out.println(" Tillykke du vandt...endeligt!!! ");
            System.out.println(" tallet var" + TAL);
            System.out.println(" du brugte " + FORSØG + " forsøg");

            System.out.println("Slut spillet? tast 1.");
            System.out.println("tryk på hvadsomhelst for at spille videre");
            int userInt = input.nextInt();
            if( userInt == 1)
            {
                keepPlaying = false;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

简单的回答。在玩家成功完成第一轮之后开始第二轮之前,您没有初始化“keepPlaying”循环中的所有必要值。请参阅下面的代码注释:

import java.util.Random;
import java.util.Scanner;

public class GuessingGame
{
    public static void main(String[] args)
    {

        Random rand = new Random();
        int TAL = rand.nextInt(20) + 1;
        int FORSØG = 0;
        Scanner input = new Scanner (System.in);
        int guess;
        int loft;
        boolean win = false;

        boolean keepPlaying = true;
        while ( keepPlaying )
        {
            Scanner tastatur = new Scanner(System.in);
            System.out.print("Enter a maximum limit: ");
            loft = tastatur.nextInt();
            TAL = (int) (Math.random() * loft + 1);

            // *** LOOK HERE ***

            // Reset the 'win' flag here, otherwise the player receives an
            // automatic win on all subsequent rounds following the first

            win = false;

            while (win == false) 
            {
                System.out.println("Guess the number between one and "+ loft + "):: ");
                guess = input.nextInt();
                FORSØG++;
                if (guess == TAL) 
                {

                    win = true;
                }
                    else if (guess < TAL) 
                {
                System.out.println("Colder, guess again!");
                }
                    else if (guess > TAL) {
                    System.out.println("Warmer, guess again!");
                }
            }

            System.out.println("You've found the number!");
            System.out.println("The number was: " + TAL + ".");
            System.out.println("You guessed " + FORSØG + " times.");

            System.out.println("To quit, enter 1.");
            System.out.println("Provide any other input to play again.");

            int userInt = input.nextInt();

            if( userInt == 1)
            {
                keepPlaying = false;
            }
        }
    }
}

抱歉翻译成英文 - 我必须确保我正确地阅读了这些内容。您可能还想将“更高”和“更低”替换为“更温暖”和“更冷”。 “温暖”和“较冷”往往表明接近正确答案,而不是正确答案的方向。