Путаница в цикле Java, требующая помощи - PullRequest
0 голосов
/ 15 июня 2019

Так что мне нужна помощь, я пытаюсь ввести программу Y / N, но она не принимает большие «Y» или «N».Еще одна вещь, которую я пытаюсь сделать - после нажатия «Y» / «y» я пытаюсь заставить программу вернуться к коду, написанному выше.Пример программы, которая отображает «123», и мне нужно продолжить?Да / нет, если введено «да», оно переходит обратно, чтобы перезапустить программу с нуля.Пожалуйста, помогите мне.

System.out.println("continue? Yes or no ");

       char check = s.next().charAt(0);

while (check != 'y' && response != 'n')// corrected this part, however need help with restarting the loop back to the first line of code in a loop {

  System.out.println("\nInvalid response. Try again.");
  check = s.next().charAt(0);

} if ((check == 'n') || (check == 'N')) {

    // I tried (check == 'n' || check == 'N') 
    System.out.println("Program terminated goodbye.");
    System.exit(0);

} else if (check == 'y') {
//need help with restarting the loop back to the first line of code in a loop 
}

Ответы [ 3 ]

1 голос
/ 15 июня 2019

Я думаю, это то, что вы ищете.

    char check;
    Scanner scanner = new Scanner(System.in);
    do
    {
        //your piece of code in here e.g.
        System.out.println("Printed 123");
        System.out.println("Do you wish to continue?[Y/y] or [N/n]");
        choice = scanner.next().charAt(0);

    }while (check =='Y' || check == 'y');

    System.out.println("Program terminated goodbye.");

Цикл do-while выполняется по крайней мере один раз, прежде чем проверяется условие, и поэтому, когда пользователь вводит Y или y, условие будет истинным, что означает, что он желает повторения цикла. Если пользователь вводит любое другое значение, то условие станет ложным, так как выбор не является ни Y, ни y, и цикл завершится.

0 голосов
/ 16 июня 2019

Используйте String.equals () для сравнения значений строк, == сравнивает строки в памяти.

0 голосов
/ 15 июня 2019

Если вы хотите проверить без учета регистра, вы должны преобразовать символ в String, затем выполните s1.equalsIgnoreCase(s2);

Итак

while(true) {
    System.out.println("Continue? [Y/N]");
    char check_char = s.next().charAt(0);
    String check = Character.toString(check_char);

    while(check.equalsIgnoreCase("y") && !response.equalsIgnoreCase("n")) {
        System.out.println("\nInvalid response. Try again.");
        check = s.next().charAt(0);
    }

    if (check.equalsIgnoreCase("n")) {
        System.out.println("Program terminated goodbye.");
        System.exit(0);
    }
}

Для возврата к первомуВ этой строке я использовал цикл while, который зацикливается навсегда.

До конца, если он равен n , затем завершается, в противном случае он возвращается к первой строке цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...