#java #user-input #do-while
#java #пользовательский ввод #do-while
Вопрос:
У меня возникли проблемы с моим оператором do while в моей программе. Я хочу, чтобы он повторял метод в случае, когда пользователь вводит Y, затем завершает работу, когда пользователь вводит N и возвращается в меню.
После второго пользовательского ввода программа больше не считывает Y / N и не выполняет инструкцию. Если я смогу получить некоторую помощь в этом, я был бы очень признателен!
switch(menuChoice)
{
// Insert
case 1:
do {
System.out.println("Inserting to heap..." );
System.out.println();
ProcessInfo insertPI = readFile.readFile(rowIncrement );
Integer K = insertPI.getPriority();
Entry<Integer, ProcessInfo> insertEntry = new EntryKV(K, insertPI);
maxHeap.insert(insertEntry);
System.out.println("Process ID: " insertPI.getProcessID() " and priority number " insertPI.getPriority() " have been inserted.");
System.out.println("Would you like to insert more? Please enter Y for yes and N for no");
YN = scan.next().charAt(0);
}
while (YN == 'Y' || YN == 'y');
if (YN == 'N' || YN == 'n'){
break;
}
else{
System.out.println("Invalid input. Returning to menu.");
break;
}
Комментарии:
1. Вы пробовали отлаживать свой код? Я предполагаю, что вам следует заменить
scan.next()
наscan.nextLine()
из-за того, как вы вводите свои данные.2. Я сделал да, но это действительно не помогло. Я попробую это очень быстро.
3. Нет, @Amongalen, проблема не в этом. В общем случае nextLine() — плохая идея; если вы хотите читать строки по очереди, используйте
scanner.useDelimiter("r?n")
вместо этого. Теперь вам не нужно вводить пустые операторы nextLine(), которые прерываются, если пользователь когда-либо использует этот пробел.