2013-12-03 4 views
2

Я пишу программу базы данных, которая позволяет пользователю искать сотрудников и открывает для них меню для них. В моей главной() мне нужно пригласить пользователя нажать m, чтобы открыть меню() или q, чтобы открыть finalStats(), любой другой вход недействителен. Моя проблема в том, что я не могу получить цикл while для правильной работы. всякий раз, когда я ударил м он работает, и когда я ударил д он работает отлично, но всякий раз, когда я ударил кнопку, кроме тех, что есть бесконечный цикл, и он просто бесконечно печатает «Пожалуйста, введите правильный символ»Заявление о переключении и while Loop

boolean end = false; 
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats"); 
    String entered = scan.next(); 
    while (end == false) 
    switch(entered) 
    { 
    case "m": 
    case "M": 
     menu(); 
    case "q": 
    case "Q": 
     finalStats(); 
     end = true; 
    default: 
     System.err.println("Please enter a valid character"); 
    } 
+0

'while (end == false)' лучше писать как 'while (! End)' – GriffeyDog

ответ

2

Вам нужно чтобы переместить линию

while (end == false) 

к перед scan.next(), чтобы позволить пользователю, чтобы попробовать еще раз. Обязательно добавьте фигурные скобки, когда вы это сделаете, поэтому while влияет на весь фрагмент программы, который вы показываете. Считается хорошей практикой всегда использовать фигурные скобки для циклов и операторы if.

Кроме того, как указывает @RahulTripathi, вам нужно добавить break заявления в конце ваших блоков case.

+0

Wow я такой глупый, haha ​​Спасибо, что он работает правильно, теперь спасибо вам большое :) – tonyisapony

0

Вам не нужен оператор break в вашем switch case. Также переместите свой оператор while, чтобы он мог сканировать.

Попробуйте это:

boolean end = false; 
while (end == false) 
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats"); 
    String entered = scan.next(); 

    switch(entered) 
    { 
    case "m": 
    case "M": 
     menu(); 
     break; 
    case "q": 
    case "Q": 
     finalStats(); 
     end = true; 
     break; 
    default: 
     System.err.println("Please enter a valid character"); 
    } 
0

Я думаю, что это устранит ваши проблемы:

boolean end = false; 
System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats"); 
String entered = scan.next(); 
while (end == false) 
{ 
switch(entered) 
    { 
    case "m": 
    case "M": 
     menu(); 
     break; 
    case "q": 
    case "Q": 
     finalStats(); 
     end = true; 
     break; 
    default: 
     System.err.println("Please enter a valid character"); 
     break; 
    } 
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final      stats"); 
    String entered = scan.next(); 
} 

У вас есть несколько проблем. Вам не хватает break; в ваших случаях, и вы не запрашиваете новый ввод внутри цикла while. Я не уверен точно, что вы делаете, хотите ли вы запрашивать вариант более одного раза.

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