【问题标题】:java, getting user input through scanner and system.in [duplicate]java,通过扫描仪和system.in获取用户输入[重复]
【发布时间】:2013-11-16 00:27:07
【问题描述】:

如何对来自“system.in”的输入给出一个条件,该条件将停止程序,直到插入正确的值?

例如,我正在等待用户的 INT,1、2、3、4 或 5 用户输入“你好”

如何给用户“输入无效,重试”的消息 并保持程序停止,直到他给出正确的?

更新:我没有来,所以你可以写我的代码,现在它看起来像这样:

            int j=UserIn.nextInt();

            switch (j) {
            case 1:
                break;

            case 2:
                writetoDic(word, "dict.txt"); 
                break;

            case 3:
                word = correction;
                break;

我问的是,如果我从用户那里得到的不是 int,我怎么能要求用户给出一个有效的参数而不是仅仅得到一个错误?

【问题讨论】:

  • 除非用户按下ENTER,否则您不会收到任何数据。
  • 如果您尝试过实现此目的,请分享您的代码。
  • 没试过,不知道怎么写。
  • @Tzur 然后先尝试一下。任何事物。如果您的尝试不起作用并且您不知道为什么,并且您已经尝试了所有力所能及的方法,那么请随时发布该尝试(以及您尝试过的内容)并寻求帮助。从长远来看,即使是您自己的一个非常糟糕的实现也可能比从我们那里复制粘贴的解决方案为您提供更多。
  • @Tzur 我的朋友,没有人会为你编写代码。您必须先尝试,如果您在某个地方绊倒,请寻求帮助。如果您不知道怎么写,请通过--> Java Tutorial <--。阅读教程,理解并尝试编写代码。

标签: java java.util.scanner system.in


【解决方案1】:

您需要使用循环。我认为您实际上并不是指halt 程序,而是实际上阻止程序继续进行,直到有效输入。你可以这样做

Scanner scanner = new Scanner(System.in);
int num;

while (true) {
    try {
        System.out.println("Enter a number: ");
        num = scanner.nextInt();
        if (num >= 1 && num <= 5) {
            break;
        }
    } catch (InputMistmatchException ex){
        System.err.println("Input needs to be a number between 1 and 5, dummy.");
    }
}

如果不在 1 到 5 之间且不是整数,程序将运行

【讨论】:

  • 这很有帮助。虽然我以无限循环结束,所以我不得不添加:scanner.nextline() 并且程序等待下一个输入非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多