Моя логическая переменная не может быть преобразована в переменную в моем операторе while - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу создать код, который повторяется до тех пор, пока пользователь не введет слово «Игра» или «Баланс слова».Я сделал do while цикл, но я получаю сообщение об ошибке в своем операторе while.Ошибка: error3 cannot be resolved into a variable.Кто-нибудь знает в чем проблема с моим кодом?

System.out.println("welcome to Roll the Dice!");
System.out.println("What is your name?");

Scanner input = new Scanner(System. in );
String Name = input.nextLine();

System.out.println("Welcome " + Name + "!");
System.out.println("Do you want to play a game or do you want to check your account's balance?");
System.out.println("For the game typ: Game. For you accounts balance typ: Balance");

do {
    String Choice = input.nextLine();
    String Balance = "Balance";
    String Game = "Game";
    input.close();

    boolean error1 = !new String(Choice).equals(Game);
    boolean error2 = !new String(Choice).equals(Balance);
    boolean error3 = (error2 || error1) == true;

    if (new String(Choice).equals(Game)) {
        System.out.println("Start the game!");
    }

    else if (new String(Choice).equals(Balance)) {
        System.out.println("Check the balance");
    }

    else {
        System.out.println("This is not an correct answer");
        System.out.println("Typ: Game to start a game. Typ: Balance to see your account's balance");
    }
}
while ( error3 == true );

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Поскольку вы определили переменную внутри цикла do-while.Сделайте это:

boolean error3=true;
do {
        String Choice = input.nextLine();
        String Balance = "Balance";
        String Game = "Game";
        input.close();

        boolean error1 = ! new String(Choice).equals(Game);
        boolean error2 = ! new String(Choice).equals(Balance);
        error3 = (error2 || error1) == true; 

        if (new String(Choice).equals(Game)){
            System.out.println("Start the game!");
        }

        else if(new String(Choice).equals(Balance)){
            System.out.println("Check the balance");
        }

        else{
            System.out.println("This is not an correct answer");
            System.out.println("Typ: Game to start a game. Typ: Balance to see your account's balance");
            }
    } 
    while(error3 == true);
0 голосов
/ 17 февраля 2019

error3 определяется внутри области do.Переместите декларацию за пределы области действия do и установите значение внутри:

    boolean error3 = false;
    do {
        String Choice = input.nextLine();
        String Balance = "Balance";
        String Game = "Game";
        input.close();

        boolean error1 = ! new String(Choice).equals(Game);
        boolean error2 = ! new String(Choice).equals(Balance);
        error3 = error2 || error1; 

Также обратите внимание, что вы можете упростить (error2 || error1) == true до просто error2 || error1.То же самое можно сделать для вашего заявления while:

while(error3);
0 голосов
/ 17 февраля 2019

Вы пытаетесь прочитать значение error3 вне области видимости тела цикла, где оно объявлено:

while(error3 == true);

Просто объявите его перед циклом:

boolean error3 = true;
do {
    //...
    error3 = (error2 || error1) == true; 
    //...
}
while(error3 == true);
...