Java - 检查用户输入的空白​​值是否失败

时间:2013-10-06 00:01:18

标签: java

我正在学习Java并且正在玩一些控制台应用程序。我正在尝试验证用户输入,并在用户输入错误时提示用户输入其他值。每当我输入一个“空”值时,程序就会挂起,当我停止它时,它会吐出所有错误。我怎样才能真正检查空?

示例:

do{
            //prompt user for word
            System.out.print("\nType \"quit\" to exit \n");
            System.out.print("Enter a single word with no spaces: ");

            //check to make sure user entered a valid string
            if (in.hasNext()){
                strWord = in.next();
                int nWordLength = strWord.length();
                if(nWordLength > 0 && !strWord.isEmpty()){ 
                  //do a whole bunch of stuff
                  // removed for brevity
                }else{
                //alert user of invalid entry
                System.out.println("Not a valid word.");
            }else{
            //alert user of invalid entry
            System.out.println("Not a valid word.");
        }
}while (!strWord.equals("quit")); //end if user enters quit

System.out.println("You are now done with the program");

我杀了我的程序,因为它挂了,我得到如下的输出......

输入“退出”退出 输入一个没有空格的单词:不是有效单词。

输入“退出”退出 输入一个没有空格的单词:不是有效单词。

输入“退出”退出 输入一个没有空格的单词:不是有效单词。

输入“退出”退出

处理以退出代码-1

结束

2 个答案:

答案 0 :(得分:1)

只是为了简化您的代码

     boolean isValidInput = false;
  do{
    //check to make sure user entered a valid string
    strWord = in.nextLine();

    if(!(strWord.isEmpty()) && !(Character.isWhiteSpace(strWord.charAt(0))))
    {
        isValidInput = true;
        //whatever goes here
    } 
    else
       System.out.println("incorrect word entered");

    }while(!isValidInput);

答案 1 :(得分:0)

我认为inScanner

我认为问题是您的代码永远不会看到用户的输入。

如果您将hasNext()next()的所有来电替换为hasNextLine()nextLine()缓冲区并等待用户点击输入,该怎么办?