在我相对较短的编程生涯中,我第一次遇到了 NoSuchElementException
。我做了一些研究,但我发现的帖子都没有追溯到类似的案例。在许多情况下,编码员只需 not put in hasNextLine() ,从而导致异常。另一个例子是当编码员尝试read two lines consequently时,这也导致了错误。第三次尝试得到了一个解决方案 check for an empty line at the end ,我觉得这可能更接近我的问题。但是,我不认为这是我正在寻找的解决方案。这是我的代码:
import java.util.HashMap; import java.util.Scanner; import java.io.*;
class DVDAdministrasjon
{
private String eier;
private String laaner;
private boolean utlaant;
private String tittel;
private HashMap<String, DVD> dvdListe = new HashMap<String, DVD>();
private HashMap<String, Person> personListe = new HashMap<String, Person>();
public void lesDVDarkiv(String filnavn) throws Exception
{
Scanner fil = new Scanner(new File(filnavn));
String curDVD = "";
String inData; //lagrer data fra filen
while (fil.hasNextLine())
{
inData = fil.nextLine();
while (inData.equals("")) //Hopper over eventuelle linjeskift
{
inData = fil.nextLine();
}
if (inData.equals("-"))
{
inData = fil.nextLine();
personListe.put(inData, new Person(inData));
}
else
{
inData = fil.nextLine();
curDVD = inData;
dvdListe.put(inData, new DVD(inData));
if (curDVD.substring(0,1).equalsIgnoreCase("*"))
{
utlaant = true;
}
}
}
}
}
这是主类:
import java.util.Scanner; import java.io.File;
class Oblig7Test1
{
public static void main(String[] args) throws Exception
{
Scanner in = new Scanner(System.in);
DVDAdministrasjon dListe = new DVDAdministrasjon();
dListe.lesDVDarkiv("dvdarkiv2.txt");
}
}
请记住,该计划将远远超出现在可见的范围。这也是一项作业,但我只对为什么会收到错误感兴趣。该文件由多行组成,某些行中包含多个单词,某些行的开头用“*”,某些行之间用“-”作为分隔符。
错误如下所示:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at DVDAdministrasjon.lesDVDarkiv(DVDAdministrasjon.java:29)
at Oblig7Test1.main(Oblig7Test1.java:9)
最佳答案
在您的代码中我添加了一些注释
while (fil.hasNextLine()) // if it enters here it has more lines
{
inData = fil.nextLine(); // OK can read as hasNextLine returned true
while (inData.equals(""))
{
inData = fil.nextLine(); // NO guarantee that there is a `nextLine`
在不完全理解您的代码的情况下,我建议如果您需要阅读下一行,那么您应该contune
到循环的顶部或使用if (fil.hasNextLine ())
关于java - NoSuchElementException : No line found (using hasNextLine(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296004/