Java 而nextLine()不等于“”
当输入文件的下一行有一个字符串时,我试图进行循环,但我得到了一个错误。知道为什么吗Java 而nextLine()不等于“”,java,string,input,while-loop,Java,String,Input,While Loop,当输入文件的下一行有一个字符串时,我试图进行循环,但我得到了一个错误。知道为什么吗 while( !((input = in.nextLine()).equals(""))){ ... } 输出: Enter file name: input1.txt evil live Exception in thread "main" This is a palindrome level This is a palindrome dog Not a palindrome java.util.NoS
while( !((input = in.nextLine()).equals(""))){
...
}
输出:
Enter file name: input1.txt
evil live
Exception in thread "main" This is a palindrome
level
This is a palindrome
dog
Not a palindrome
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at Palindrome.main(Palindrome.java:41)
in.nextLine可能返回一个null,该值被分配给输入,您正试图在该输入上调用equals
使用hasNextLine确保您可以获得下一行。in.nextLine可能返回一个null,该null被分配给输入,您正试图在该输入上调用equals
使用hasNextLine确保可以获得下一行。文件结尾后没有行。当读取最后一行时,对nextLine的下一次调用将失败。用于防止出现这种情况。文件结尾后没有行。当读取最后一行时,对nextLine的下一次调用将失败。用于防止出现这种情况。您的代码不正确,因为输入可能会在不提供空行的情况下结束。在检查行是否为空之前,应先检查行是否可用:
while(in.hasNextLine() && !((input = in.nextLine()).equals(""))){
...
}
您的代码不正确,因为输入可能会在不提供空行的情况下结束。在检查行是否为空之前,应先检查行是否可用:
while(in.hasNextLine() && !((input = in.nextLine()).equals(""))){
...
}
按照循环的设置方式,它永远不会到达字符串,因为它会在到达文件末尾之前到达。应该是这样的
while (input.hasNextLine()) {
...
}
这意味着它将继续,直到文件没有下一行。按照循环的设置方式,它将永远不会到达字符串,因为这样做之前它将到达文件的末尾。应该是这样的
while (input.hasNextLine()) {
...
}
这意味着它将继续,直到文件没有下一行。与null进行比较,并与文件结尾进行检查
作为
或者尝试:
while(in.hasNextLine(){
input = in.nextLine();
if(input != null && !(input.equals(""))){
........
}
}
和null进行比较,以检查文件的结尾
作为
或者尝试:
while(in.hasNextLine(){
input = in.nextLine();
if(input != null && !(input.equals(""))){
........
}
}
尝试使用这种类型的东西,如果需要,捕获异常:
input = in.nextLine();
while( !(input.equals(""))){
...
}
如果它抛出错误,则设置一个try…catch循环尝试使用这种类型的东西,如果需要,捕获异常:
input = in.nextLine();
while( !(input.equals(""))){
...
}
如果它抛出错误,那么设置一个try…catch循环可能是您需要的
while(in.hasNextLine()){
input = in.nextLine();
}
也许你需要
while(in.hasNextLine()){
input = in.nextLine();
}
扫描仪在输入不足时引发异常。您似乎认为它将返回一个长度为零的字符串
您是否使用扫描仪一次读取一行文件?这不是它的目的。您可能需要查看BufferedReader。扫描仪在输入不足时抛出异常。您似乎认为它将返回一个长度为零的字符串
您是否使用扫描仪一次读取一行文件?这不是它的目的。你可能想看看BufferedReader。我试过了,但我得到了:输入文件名:input1.txt邪恶生活这是回文级别这是回文狗而不是线程main java.util.NoSuchElementException中的回文异常:在java.util.Scanner.nextLineScanner.java:1516在palindrome.mainPalindrome.java:41中找不到行吗指的是我的最新答案?如果是,请帮我一个忙。在in.nextLine失败之前放置一个调试器并检查其值,然后与我共享。我添加了另一种方法。如果行得通,请告诉我。如果没有,,请让我知道起始行的异常。我尝试了这个,但我得到了这个:输入文件名:input1.txt邪恶生活这是回文级别这是回文狗而不是主线程java.util.NoSuchElementException中的回文异常:在java.util.Scanner.nextLineScanner.java:1516处找不到任何行java:41你指的是我更新的答案吗?如果是,请帮我一个忙。在in.nextLine失败之前放置一个调试器并检查其值,然后与我共享。我添加了另一种方法。如果行得通,请告诉我。如果没有,请让我知道发起行的例外情况。