2015-03-09 3 views
0

У меня есть сканер, который считывает ввод, но он должен выйти, когда он читает 'q'. Проблема в том, что я не могу найти способ сделать это.Перерыв, если сканер читает определенный вход

Scanner sc = new Scanner(System.in); 
System.out.println("question 1"); 
str1 = sc.nextLine(); 
System.out.println("question 2"); 
str2 = sc.nextLine(); 
System.out.println("question 3"); 
str3 = sc.nextLine(); 

на вопросы представляет информацию о пользователе ... Это просто пример кода, но он демонстрирует мою проблему, как только пользователь нажмет д он должен бросить курить. Есть идеи?

Заранее благодарен!

+0

Считаете ли вы, что пользователь вводит входной цикл? –

+0

Поместите его в цикл while и выйдите, когда выполняется условие выхода (пользователь ввел «q»). Если вам нужно, чтобы он перешел к набору вопросов, вы можете перебрать список вопросов, при этом условие выхода будет либо им вводить «q», либо список исчерпан; что наступит раньше. – Carcigenicate

+0

Вы можете написать цикл while, который будет задавать вопросы до тех пор, пока (или если) пользователь не наберет q в sc.nextline(). – wkcamp

ответ

1

Обычно это делается, как этот

String input = ""; 
ArrayList<String> list = new ArrayList<String>(); 
while (!(input = scan.nextLine()).equals("q")) { 
    // store the input (example - you can store however you want) 
    list.add(input); 
} 

, но в вашем случае, вы могли бы также включать в себя список вопросов, которые вы можете переходить.

ArrayList<String> questions = new ArrayList<String>(); 
questions.add("q1"); 
questions.add("q2"); 
questions.add("q3"); 

Scanner scan = new Scanner(System.in); 

String input = ""; 
ArrayList<String> userInput = new ArrayList<String>(); 
int index = 0; 

// print the first question and increment the index 
System.out.println(questions.get(index)); 
index++; 

while (!(input = scan.nextLine()).equals("q")) { 
    // store the input (example - you can store however you want) 
    userInput.add(input); 

    // print the next question since the user didn't enter q 
    // if there are no questions left, stop asking 
    if (index == questions.size() - 1) { 
     break; 
    } 
    System.out.println(questions.get(index)); 

    // keep track of the index!! 
    index++; 
} 

scan.close(); 

В конце вопроса, задающего вопрос, вы можете использовать значения в списке userInputs. Ответы хранятся начиная с индекса 0 и соответствуют соответствующему списку вопросов.

На стороне примечания, если вы действительно хотели обнаружить, когда пользователь нажал «q», прежде чем нажать клавишу ввода, вы можете реализовать KeyListener на кнопке q ... (однако это остановит программу каждый раз, когда действительный вход пользователя начал с водно) см http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.html подробнее

0

Людей до меня правильно, но вы можете также попробовать

String input = "" 
ArrayList<String> list = new ArrayList<String>(); 
while (true){ 
    input = sc.nextLine(); 
    if (input.equals("q")) 
     break; 
    list.add(input) 
} 

более читаемые и ваши намерения для остановки код гораздо более ясно.

Надеюсь, это поможет.

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