当我选择输入3(在我的主菜单中选择学生时,我的子菜单无法显示。如有任何帮助,我们将不胜感激,谢谢!
这是主菜单(当我运行代码时首先显示(
public void menu() throws ClassNotFoundException, IOException {
Scanner sc = new Scanner(System.in);
int input;
do {
System.out.println("1) Populate Students");
System.out.println("2) Load Students from file");
System.out.println("3) Select Students");
System.out.println("4) Show Students");
System.out.println("5) Save Students to file");
System.out.println("6) Exit");
input = Integer.parseInt(sc.next());
if (input == 1)
{
populateStudents();
} else if (input == 2) {
loadStudents();
} else if (input == 3) {
selectStudents();
} else if (input == 4) {
showStudents();
} else if (input == 5) {
saveStudents();
}
} while (input != 6);
}
这是我的子菜单代码,我希望能够从主菜单中选择输入3,并调用此子菜单进行选择。
public void studentSubMenu(int i) throws IOException, ClassNotFoundException
{
System.out.println("Student Menu, select an option");
int input = 0;
while(input != 5)
{
System.out.println("1) Calculate Average");
System.out.println("2) Calculate Weighted Average");
System.out.println("3) Determine Letter Grade");
System.out.println("4) Display Students info");
System.out.println("5) GO BACK");
Scanner sc = new Scanner(System.in);
input=sc.nextInt();
if (input == 1)
{
myStudents[i].calcAvg();
}
if (input == 2)
{
myStudents[i].calcAvg(.7, .3);
}
if (input == 3)
{
myStudents[i].calcLetterGrade();
}
if (input == 4)
{
myStudents[i].displayStudent();
} else if (input == 5) {
menu();
}
}
扩展我的评论:
这里的问题是,您为处理menu
方法中3
的输入而编写的案例调用了另一个名为selectStudents
的方法。
这不是包含子菜单逻辑的方法。您命名为studentSubMenu
的方法。这意味着,如果用户输入3
的期望行为是将其显示在子菜单中,则除非在else if (input == 3)
块中直接调用studentSubMenu
,或者由selectStudents
本身调用,否则不会发生这种情况。
你在menu
中的逻辑可能看起来像:
} else if (input == 3) {
int student = selectStudents();
studentSubMenu(student);
}