我的第一次编程生命相对较短,我遇到了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");
}
}
请记住,这个程序将远远超出现在可见的范围。它也适用于作业,但我只对我为什么会收到错误感兴趣。该文件由某些行中包含多个单词的行组成,其中包含&#34; *&#34;在一些行的开头和&#34; - &#34;作为某些行之间的分隔符。
错误如下所示:
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)
答案 0 :(得分:1)
在您的代码中,我添加了一些评论
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())
再次测试
答案 1 :(得分:0)
在你的第二个while循环中执行以下操作:
service stop nginx
service start nginx