логический ввод в строку yes для wantToContinue в цикле do while

Я пытаюсь использовать цикл do while, который завершится, если пользователь ответит «да» на «вы хотите продолжить». нет. Итак, я искал информацию о том, как присвоить строковое значение значению boolean, равному true, но мой код не работает. Может ли кто-нибудь показать мне правильный синтаксис?

boolean wantsToContinue=String.equalsIgnoreCase("yes");

do{
    rollOne=diceOne.roll();
    rollTwo=diceTwo.roll();
    rollTotal=rollOne+rollTwo;
    //BoardSquare thePlayer.setLocation(square[]);

    Scanner keyboard=new Scanner(System.in);
    System.out.println("Do you want to continue:");
    wantsToContinue = keyboard.nextBoolean();

} while (thePlayer.getBalance()>0 && wantsToContinue);

Когда я настраиваю его таким образом, я получаю, что на нестатический метод нельзя ссылаться из статического контекста. Мне нужно избегать отдельного метода или объекта для этой логики.


person Michael Queue    schedule 17.11.2013    source источник
comment
Найдите non static method cannot be referenced from a static context.   -  person Sotirios Delimanolis    schedule 17.11.2013
comment
Чего вы надеетесь достичь с помощью первой строки кода? Разве что-то подобное не принадлежит внутри цикла, а не снаружи? А что там писать вместо String?   -  person Dawood ibn Kareem    schedule 17.11.2013
comment
я имею. Но все, что я нашел, связано с созданием экземпляра объекта, которого мне нужно избегать в рамках задания. Спасибо в любом случае.   -  person Michael Queue    schedule 17.11.2013
comment
@DavidWallace Я получаю сообщение о том, что присвоенное значение никогда не используется, однако, если я попытаюсь переместить присваивание логической переменной внутри цикла do while, к wantToContinue не будет доступа. Кроме того, я попытался изменить String на Boolean, но это тоже не работает. Я не уверен, что вы это имели в виду.   -  person Michael Queue    schedule 18.11.2013
comment
Вы не хотите использовать nextBoolean() на своем сканере, потому что nextBoolean() всегда ожидает true или false. Вы хотите использовать метод, который возвращает String — либо next(), либо nextLine(), чтобы вы могли проверить, что на самом деле представляет собой String. Итак, что вы собираетесь делать с String, как только вы его получите, и где equalIgnoreCase вписывается?   -  person Dawood ibn Kareem    schedule 18.11.2013
comment
@DavidWallace Я возился с несколькими вариантами, но не смог заставить их работать. Я понимаю, что equalIgnoreCase гарантирует, что пользовательский ввод не будет чувствительным к регистру. Если я попытаюсь изменить ввод сканера с nextBoolean() на nextLine(), это даст мне ошибку относительно несовместимых типов; даже если я изменю логическое значение wantToContinue на String WantToContinue. Единственное, о чем я могу думать, это создать новую переменную для хранения строкового ввода, использовать метод nextLine(). На мой взгляд, мне нужно получить строковый ввод и преобразовать его в логическое значение. Или присвойте логическое значение строке, чтобы все остальные входные данные были ложными.   -  person Michael Queue    schedule 18.11.2013
comment
Если wantsToContinue объявлен как String, то wantsToContinue = keyboard.nextLine(); НЕ выдает ошибку относительно несовместимых типов.   -  person Dawood ibn Kareem    schedule 18.11.2013
comment
@DavidWallace это работает. Я не уверен, что я сделал в первый раз. Большое спасибо за вашу помощь!   -  person Michael Queue    schedule 18.11.2013


Ответы (2)


equalsIgnoreCase не объявлен как статический метод в классе String, но вы используете его как String.equalsIgnoreCase. Следовательно, ошибка "Невозможно сослаться на нестатический метод из статического контекста"

person BSS    schedule 17.11.2013

попробуй это

    String wantsToContinue="";

    do{

        rollOne=diceOne.roll();
        rollTwo=diceTwo.roll();
        rollTotal=rollOne+rollTwo;
        //BoardSquare thePlayer.setLocation(square[]);


        Scanner keyboard=new Scanner(System.in);
        System.out.println("Do you want to continue:? yes | no");
        wantsToContinue = keyboard.next();

    } while (thePlayer.getBalance()>0 && wantsToContinue.equalsIgnoreCase("yes"));

В каждой итерации подскажите да или нет. если вы дадите да, цикл продолжится (также на основе вашего возврата getBalance> 0). или он завершен. equalsIgnoreCase("yes") это проверка данного варианта yes или YES или их комбинации. если равно, возвращает true.

person subash    schedule 17.11.2013
comment
Вы тоже должны дать объяснение. Просто дать код на самом деле не ответ. - person Steve P.; 17.11.2013
comment
это не работает. Если я отвечу «нет», цикл не завершится. - person Michael Queue; 17.11.2013