【问题标题】:Why is my program not waiting for input?为什么我的程序不等待输入?
【发布时间】:2015-05-15 01:11:26
【问题描述】:

我正在尝试获取用户输入并使用正则表达式对其进行验证。但是,当我运行程序时,它似乎并没有等待接收任何额外的用户输入。相反,我得到了

线程“main”中的异常 java.util.NoSuchElementException`

任何关于正在发生的事情的帮助都会很棒!

这是我的代码:

//Retrieve name
System.out.println("What name would you like to search for? (Enter first name only without spaces)");
Scanner input = new Scanner(System.in);
while (!input.hasNext("[A-Za-z]+")) {
    System.out.println("Invalid entry. Please enter first name only.");
    input.next();
}
String name = input.next();
System.out.println("You gave me as input the name:" + name);
}

【问题讨论】:

  • 我可以毫无问题地运行它。您输入的是什么类型的输入?
  • 为什么 [A-Za-z] 后面有一个+号?
  • @ClydeD'Cruz 这是一个正则表达式元字符,意思是“前面的一个或多个”。
  • 你之前问的是一个完全不同的问题(我的回答提供了一个解决方案)。如果您想问另一个问题,请不要编辑您的原始问题。接受答案并发布一个新问题!否则,每次您感觉如此时,您都会用不同的问题来编辑您的初始帖子,这在 SO 没有任何意义!
  • 好吧好吧。它还将增加您的新问题的可见度,因此对您也更好(我刚刚看到您完全改变了您的问题):)

标签: java regex java.util.scanner


【解决方案1】:

工作正常。试试这个作为一个完整的工作类(保存为myInput.java,然后编译使用javac myInput.java,然后运行它使用@987654323 @):

import java.io.*;
import java.util.Scanner;
class myInput {
    public static void main(String[] args) {
    //Retrieve name
    System.out.println("What name would you like to search for? (Enter first name only without spaces)");
    Scanner input = new Scanner(System.in);
    while (!input.hasNext("[A-Za-z]+")) {
        System.out.println("Invalid entry. Please enter first name only.");
        input.next();
    }
    String name = input.next();
    System.out.println("You gave me as input the name:" + name);
    }
}

OUTPUT(我先给出一个无效的输入(test1),然后正确打印一个有效的(test)):

test1
Invalid entry. Please enter first name only.
test
You gave me as input the name:test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多