当前位置: 首页 > 知识库问答 >
问题:

Java-如何继续要求用户输入后,尝试捕捉?

王德华
2023-03-14

我正在做一个简单的主菜单项目。我必须检查用户输入的有效性:1)他是否输入了1和7之间的选项(是吗)2)他是否输入了整数。

对于第二,我想使用try-and-catch,但没有成功。用户输入非整数后,它将打印异常(在catch块中),并返回main。我想一直要求用户输入,直到他输入1-7

public void SystemExecute() {

    System.out.println("Welcome to our project!");
    int userSelection = 0;
    Boolean incremental;

    try {
        while (userSelection != 6) {

            printMenu();
            userSelection = getUserSelectionFromMenu();

            switch (userSelection) {
                case 1: {
                    loadFile();
                    break;
                }
                case 2: {
                    printGraphInformation();
                    break;
                }
                case 3: {
                    printTargetInformation();
                    break;
                }
                case 4: {
                    printTargetConnectionStatus();
                    break;
                }
                case 5: {
                    incremental = askForIncremental();
                    try {
                        TaskExecuting.executeTask(graph, incremental, graphSummary);
                    } catch (OpeningFileCrash | FileNotFound e) {
                        System.out.println(e.getMessage());
                    }
                    firstRun = false;
                    break;
                }
                case 6: {
                    exitFromSystem();
                    break;
                }
                case 7: {
                    saveSystemStatus();
                    break;
                }
                default: {
                    System.out.println("Please enter an option between 1-7!\n");
                    break;
                }
            }
        }
    } catch (InputMismatchException e)
    {
        System.out.println("Please enter an integer number !");
    }

}

共有3个答案

唐元凯
2023-03-14

将try catch块放入while循环中。

水昊阳
2023-03-14
public void SystemExecute() {
        System.out.println("Welcome to our project!");
        int userSelection = 0;
        Boolean incremental;

        do{
            try {
                printMenu();
                userSelection = getUserSelectionFromMenu();
                switch (userSelection) {
                    case 1: {
                        loadFile();
                        break;
                    }
                    case 2: {
                        printGraphInformation();
                        break;
                    }
                    case 3: {
                        printTargetInformation();
                        break;
                    }
                    case 4: {
                        printTargetConnectionStatus();
                        break;
                    }
                    case 5: {
                        incremental = askForIncremental();
                        try {
                            TaskExecuting.executeTask(graph, incremental, graphSummary);
                        } catch (OpeningFileCrash | FileNotFound e) {
                            System.out.println(e.getMessage());
                        }
                        firstRun = false;
                        break;
                    }
                    case 6: {
                        exitFromSystem();
                        break;
                    }
                    case 7: {
                        saveSystemStatus();
                        break;
                    }
                    default: {
                        System.out.println("Please enter an option between 1-7!\n");
                        break;
                    }
                }
            } while(userSelection != 6)
            catch (InputMismatchException e)
            {
                System.out.println("Please enter an integer number !");
            }
    }
    }

我宁愿建议做一个do-while而不是while循环

景哲
2023-03-14

在while循环中进行try-catch:

public void SystemExecute() {
                        System.out.println("Welcome to our project!");
        int userSelection = 0;
        Boolean incremental;

        while (userSelection != 6) {
            try {
                printMenu();
                userSelection = getUserSelectionFromMenu();
                switch (userSelection) {
                    case 1: {
                        loadFile();
                        break;
                    }
                    case 2: {
                        printGraphInformation();
                        break;
                    }
                    case 3: {
                        printTargetInformation();
                        break;
                    }
                    case 4: {
                        printTargetConnectionStatus();
                        break;
                    }
                    case 5: {
                        incremental = askForIncremental();
                        try {
                            TaskExecuting.executeTask(graph, incremental, graphSummary);
                        } catch (OpeningFileCrash | FileNotFound e) {
                            System.out.println(e.getMessage());
                        }
                        firstRun = false;
                        break;
                    }
                    case 6: {
                        exitFromSystem();
                        break;
                    }
                    case 7: {
                        saveSystemStatus();
                        break;
                    }
                    default: {
                        System.out.println("Please enter an option between 1-7!\n");
                        break;
                    }
                }
            }
            catch (InputMismatchException e)
            {
                System.out.println("Please enter an integer number !");
            }
    }
}
 类似资料:
  • 我已经看了这个程序几个小时了,但我仍然不明白其中的逻辑。程序要求用户输入整数。 一旦用户输入了整数,它将向用户输出所有的正数、负数和输入的总数,以及这些数字的平均值。 这是我陷入困境的地方: 然后它会询问用户是否要继续。用户将输入或以指示他们是否要继续。如果用户输入“y”,循环将再次进行,如果他们输入“n”,它将显示再见消息。我不知道如何设置。 我已经尝试了一个 do while 循环,我目前正在

  • 我正在写一个叫做hangman.py的程序。在我的程序中,用户不能在我的输入中输入“?”或空白。例如,用户不能输入“?xx?xx?”或“我该怎么做”。但用户可以输入诸如“ldkdjgg”或“stop-go”之类的内容。如果用户输入诸如“?xxxxx”或“我该怎么做”之类的内容,我必须不断询问用户请输入一个不包含的要猜测的单词?或空白:“.我的问题是如何打印”请输入一个不包含字符的要猜测的单词?或空

  • 我需要使用while循环来询问用户一个介于1-100之间的数字,如果用户输入的数字是负数或超过100,我会告诉用户他们输入了错误的数字。这是我到目前为止的情况。每当我运行它时,它都会要求用户输入。当输入为负数或大于100时,它表示无效数字,而当用户输入为45时,当0-100之间的数字有效时,它仍表示无效数字。我不认为这是阅读代码的最后一部分。

  • 我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用循环可以解决这个问题,但我不知道如何让它工作。 这是我的密码: 提前谢谢!

  • 我正在尝试创建一个文字游戏,它可以对一个单词进行加密,并根据用户输入的内容将字符移位一定的数字,解密加密,并检查该单词是否为回文。问题是我不知道如何保持输入,所以在我加密或检查它是否为回文后,程序结束,因此我无法解密加密的内容。 例如,如果用户输入单词“hello”并选择加密该单词,密钥为3,则应显示“khoor”。然后,我希望能够通过将“khor”解密回“hello”来继续,但程序结束。 此外,

  • 这是我为CS类制作的文本冒险游戏的一小部分。你正在探索一座房子,你通过告诉游戏你想去北、南、东还是西来导航它 因此,我想添加一些内容,以便在输入无效输入时告诉您,如果您说拼写错误的单词,如Nroth、Suoth、Eas或Weast。这些只是例子,但希望你们知道我的意思,只要它不完全匹配北,南,东或西。在这段代码中,我将如何做到这一点? 我举了一个错误的例子,如果你在写“elif room==”的地