#java
#java
Вопрос:
Вот мой код:
import java.util.Scanner;
// I want to call the menu function in my driver class and in a do while loop .
public class Driver {
public static void main(String[] args) {
do {
Scanner scanner = new Scanner(System.in);
char choice = scanner.next().charAt(0);
} while (choice == 'Q');// How to exit the menue
}
static void createNewEmployee() {
System.out.println("What is the name of employee?");
}
static void process() {
char choice;
switch (choice) {
case 'N':
System.out.println("new employee");
createNewEmployee();
break;
case 'P':
System.out.println("Compute paychecks");
break;
case 'R':
System.out.println("Raise Wages ");
break;
case 'L':
System.out.println("List Employees ");
break;
default:
System.out.println("Error");
}
}
}
Ответ №1:
Измените while (choice == 'q')
на while (choice != 'q')
. Подумайте об этом так: «если пользователь нажимает что-либо, кроме «q», продолжайте».
Комментарии:
1. Нет, проблема в том, как принимать пользовательский ввод снова и снова!
Ответ №2:
Я думаю, это поможет вам!!
public static void main(String[] args) {
char choice;
do {
Scanner scanner = new Scanner(System.in) ;
System.out.print("Press Any Key: N -- New, P -- Paycheck, R -- Raise Wages,-- List Employee, Q -- Quit: ");
choice = scanner.next().charAt(0);
process(choice);
} while(choice !='Q');
}
static void process(char choice) {
switch (choice) {
case 'N':
System.out.println("new employee");
break;
case 'P':
System.out.println("Compute paychecks");
break;
case 'R':
System.out.println("Raise Wages ");
break;
case 'L':
System.out.println("List Employees ");
break;
case 'Q':
System.out.println("Thanks!!");
break;
default:
System.out.println("Error");
}
}
Комментарии:
1. Я не думаю, что вам нужно создавать новое
Scanner
на каждой итерации цикла. Кроме того,Scanner
объект должен быть закрыт после того, как вы закончили его использовать, т.Е. Вызвать методclose()
классаScanner
.2. Да, это сделает код более оптимальным. Спасибо!!