返回程序到上一个函数并清除当前函数数据(Java)

标题可能有点不直观,但我不知道该怎么解释。

因此,这是我要为任务指定“应用程序”的协议,其中一项要求是该应用程序的UI是基于文本的,并使用MVC模式工作。

我一直在努力实现的一个方面是有效地“回退”菜单。

这是我想出的最好的事情:

public class Menu{
    Scanner read;

    public int MainMenu(){
        System.out.println("############# !!! Main Menu !!! #############\n");
        System.out.println("1) Shop");    //there's more options but I want to keep short and I only need one to demonstrate my troubles
        System.out.println("0) Quit");    //terminates the application

        int e = -1;
        while (e<0 || e>4){
            e = read.nextInt();
            if (e<0 || e>4)
                System.out.println("Wrong choice");
        }
        return e;   //this value goes to the controller that then redirects to fucntions such as the one we see bellow
    }

    public int ShopMenu(){
        System.out.println("############# !!! Shop Menu !!! #############\n");
        System.out.println("\nLogin with your acount. If you want to go back to the main menu type: -back.\n");

        System.out.println("Type your email: ");
        String email=read.next();     //this string is meant to be read in the Class that holds all the registred emails so it can verify it's validity, but that's a not a concern currently.
        switch (email){
            case "-back": MainMenu(); email=""; email = read.next() ; break;
        }

        return 1;
    }
}

虽然我可以使用此解决方案返回“主菜单”,但电子邮件字符串已“用完”(不再为空,用户无法再写任何内容),下次选择商店菜单时,我可以t输入另一封电子邮件,程序将停止运行。

我的意图是,一旦ShopMenu函数结束,将清除电子邮件字符串,并且用户可以继续使用它来插入其他电子邮件,而应用程序将终止。所有这些都不会明显损害返回上一级菜单的能力。

- 编辑 -

应MarsAtomic的请求,以下是程序当前状态的输出:

####### !!!主菜单 !!!      1)店铺      0)退出      1个      ####### !!!商店菜单!      用您的帐户登录。如果要返回主菜单,请输入:   -背部。      Insira o电子邮件:      -背部      ####### !!!主菜单 !!!      1)店铺      0)退出      1个      -背部      流程结束,退出代码为0
评论