2015-03-09 2 views
0
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")); 
    } 

}Как закончить цикл do while с введенной пользователем строкой?

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

+0

Что именно «код не работает» означает? У вас есть журнал ошибок? –

ответ

4

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

String decide; 
do { 
    //do something ... 
    decide = keyboard.nextLine(); 
} while (decide.equals("yes")); 
+0

Это сработало, я не понимал, что должен был объявить его снаружи. Большое спасибо! – Migs

0

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

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

+0

Это не причина того, что он не работает. – quixotrykd

+0

'nextLine' читает * до тех пор, пока пользователь не нажмет Enter -' '\ n'' не включен в результирующую строку –

0

Вы должны объявить объявить строку описания нерабочей 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

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

String decide = null 
    do { 
     .... 
     decide = keyboard.nextLine(); 
    } while (decide.equals("yes")); 
+0

Не отвечай мой ответ :) –

+1

@BinkanSalaryman Я не пересказываю ваш anser. Я пишу свой собственный anser ar в то же время, что и вы. Если вы посмотрите ближе, вы увидите разницу. – Jens

Смежные вопросы