public static void main (String[] args)
    {
        do {
            Scanner keyboard = new Scanner(System.in);
            System.out.print("Enter a string: ");
            String sentence = keyboard.nextLine();

            System.out.print("Enter a letter: ");
            String fullLetter = keyboard.nextLine();
            char letter = fullLetter.charAt(0);
            keyboard.nextLine();

            int amount = 0;
            for (int i = 0; i < sentence.length(); i++) {
                char ch = sentence.charAt(i);
                if (ch == letter) {
                    amount++;
                }
            }

            System.out.println(letter + " appears " + amount + " times in " + sentence);

            System.out.print("Continue? ");
            String decide = keyboard.nextLine();
        } while (decide.equals("yes"));
    }

}

Я хочу, чтобы пользователь ввел либо «да», либо «нет» в конце цикла, затем я хочу, чтобы этот ввод определял, будет ли программа повторяться снова или нет. В настоящее время последняя строка моего кода не работает. Я огляделась и не знаю, что мне делать, чтобы это исправить.

0
Migs 9 Мар 2015 в 17:58

4 ответа

Лучший ответ

Вам нужно объявить вашу переменную decide вне цикла и инициализировать внутри:

String decide;
do {
    //do something ...
    decide = keyboard.nextLine();
} while (decide.equals("yes"));
4
Binkan Salaryman 9 Мар 2015 в 15:03

Вы должны определить решение вашей переменной вне цикла:

    String decide = null
    do {
      ....
      decide = keyboard.nextLine();
    } while (decide.equals("yes"));
0
Jens 9 Мар 2015 в 15:04

Вы должны объявить строку description вне цикла do / while, в противном случае она является локальной переменной цикла do / while и не может быть доступна для части тестирования do. Просто используя

public static void main(String[] args) {
String decide;
        do {
            Scanner keyboard = new Scanner(System.in);
            System.out.print("Enter a string: ");
            String sentence = keyboard.nextLine();

            System.out.print("Enter a letter: ");
            String fullLetter = keyboard.nextLine();
            char letter = fullLetter.charAt(0);
            keyboard.nextLine();

            int amount = 0;
            for (int i = 0; i < sentence.length(); i++) {
                char ch = sentence.charAt(i);
                if (ch == letter) {
                    amount++;
                }
            }

            System.out.println(letter + " appears " + amount + " times in "
                    + sentence);

            System.out.print("Continue? ");
            decide = keyboard.nextLine();
        } while (decide.equals("yes"));
    }

Решит вашу проблему.

0
user2577576user2577576 9 Мар 2015 в 15:04

Вы должны использовать keyboard.next() для чтения String вместо keyboard.nextLine()

next() читает только слово, nextLine() читает всю строку, включая Enter, поэтому никогда не будет равно "да"

0
steven35 9 Мар 2015 в 15:02