向菜单添加子菜单



当我选择输入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);
}

相关内容

  • 没有找到相关文章

最新更新