来自扫描仪的空白输入 - java

时间:2011-04-16 20:16:50

标签: java java.util.scanner

我想要做的是,如果用户点击回车键,程序应该抛出BadUserInputException。 我的问题是每当我按下回车键时,它只是把我放在控制台的另一行,基本上什么也没做。

Scanner input = new Scanner(System.in);
    System.out.println("Enter Student ID:");

    String sID = null;
    if (input.hasNextInt()==false){
        System.out.println("Please re-check the student number inputted. Student number can only be digits.");
        throw new BadUserInputException("Student number can not contain non-digits.");
    }else if (input.next()==""){
        throw new BadUserInputException("Student number can not be empty");
    }

4 个答案:

答案 0 :(得分:6)

我遇到了这个确切的问题,我相信我找到了解决方案。

关键是接受输入为String类型,并使用.isEmpty()方法检查用户是否输入了任何内容。

如果你的String被命名为“cheese”并且你的扫描仪被命名为“in”,那么这就是这样:

cheese = ""; // empty 'cheese' of prior input
cheese = in.nextLine(); //read in a line of input

//if user didn't enter anything (or just spacebar and return)
if(cheese.isEmpty()) {
System.out.println("Nothing was entered. Please try again");
} 
//user entered something
else {
[enter code here checking validity of input]
}

我尝试对整数输入实现此检查,并发现最好接受String类型输入并使用包装类将其转换为int类型。如果你有

int eger = 0; //initialize to zero

然后您将此代码放在上面的else语句中:

else{
eger = Integer.valueOf(cheese);
}

我知道这个问题是在2年前被问到的,但我发布这个问题是为了帮助像我这样寻找答案的人。 :)

答案 1 :(得分:4)

扫描程序在空格和换行符之间查找令牌 - 但是没有。我不倾向于使用Scanner来读取标准输入 - 我使用这样的老式BufferedReader方法:

BufferedReader buf = new BufferedReader (new InputStreamReader (System.in));

然后我可以说

String line = buf.readLine ();
if (line.equals ("")) blah();

然而,可能有一个更简单的解决方案。

答案 2 :(得分:2)

在扫描字符串时使用nextLine()方法而不是next(),最后使用isEmpty()方法检查字符串。这对我有用..

答案 3 :(得分:1)

您需要使用.equals方法比较字符串,而不是==