我正在学习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
结束答案 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)
我认为in
是Scanner
?
我认为问题是您的代码永远不会看到用户的输入。
如果您将hasNext()
和next()
的所有来电替换为hasNextLine()
和nextLine()
缓冲区并等待用户点击输入,该怎么办?