我有无限递归的问题。主方法将运行,如果我选择1,它将转到子菜单()。但是,当我在子菜单()中选择错误的选项时,程序必须循环回主方法。
但是,这种情况可能导致堆栈溢出。
你对这个问题有什么想法吗?它如何在不调用main()的情况下循环回main方法?
非常感谢你们。
public void main() {
// variables omitted
while (menu) {
switch (option) {
case 1:
subMenu();
break;
}
}
}
public void subMenu() {
switch (a) {
case 1:
case 2:
default:
System.out.println("Invalid Option");
main();
}
}
答案 0 :(得分:4)
您不需要调用main()
返回main方法,从方法返回,您说return <vairable>
,或者如果方法是void返回类型,则不需要返回在方法的最后。如果您想从不是方法结尾的地方返回,您仍然可以说return
。
所以在上面的例子中,switch
是subMenu
方法中的最后一个元素,所以在切换之后,方法就完成了,所以返回。只需删除对main()
的调用。
查看http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html