java что - java.util.NoSuchElementException: строки не найдено




2 Answers

со Scanner вам нужно проверить, есть ли следующая строка с hasNextLine()

поэтому петля становится

while(sc.hasNextLine()){
    str=sc.nextLine();
    //...
}

это читатели, которые возвращают null на EOF

Конечно, в этом фрагменте кода это зависит от того, правильно ли форматируется вход

line found

У меня есть исключение времени выполнения в моей программе, пока я читаю файл через сканер.

java.util.NoSuchElementException: No line found     
   at java.util.Scanner.nextLine(Unknown Source)    
   at Day1.ReadFile.read(ReadFile.java:49)  
   at Day1.ParseTree.main(ParseTree.java:17) 

Мой код:

while((str=sc.nextLine())!=null){
    i=0;
    if(str.equals("Locations"))
    {
        size=4;
        t=3;
        str=sc.nextLine();
        str=sc.nextLine();
    }
    if(str.equals("Professions"))
    {
        size=3;
        t=2;
        str=sc.nextLine();
        str=sc.nextLine();
    }
    if(str.equals("Individuals"))
    {
        size=4;
        t=4;
        str=sc.nextLine();
        str=sc.nextLine();
    }

int j=0;
String loc[]=new String[size];
while(j<size){
    beg=0;
    end=str.indexOf(',');
    if(end!=-1){
        tmp=str.substring(beg, end);
        beg=end+2;
    }
    if(end==-1)
    {
        tmp=str.substring(beg);
    }
    if(beg<str.length())
        str=str.substring(beg);
    loc[i]=tmp;
    i++;

    if(i==size ){
        if(t==3)
        {
            location.add(loc);
        }
        if(t==2)
        {
            profession.add(loc);
        }
        if(t==4)
        {
            individual.add(loc);
        }
        i=0;
    }
    j++;
    System.out.print("\n");
}



По какой-то причине класс Scanner также выдает это же исключение, если он встречает специальные символы, которые он не может прочитать. Помимо использования hasNextLine() перед каждым вызовом nextLine() убедитесь, что правильная кодировка передана конструктору Scanner , например:

Scanner scanner = new Scanner(new FileInputStream(filePath), "UTF-8");




Related