Я продолжаю получать исключение java.util.NoSuchElementException, но я не вижу, в чем заключается ошибка

#java #nosuchelementexception

Вопрос:

Я пытаюсь написать программу на Java, которая считывает текстовый файл и подсчитывает, сколько раз встречается каждое слово. Но я продолжаю получать исключение «Нет такого элемента». Я предполагаю, что что-то не так с ArrayList или с тем, как я получаю доступ к его элементам. Любая помощь будет признательна.

 
    package text_analyzer;
import java.io.File;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class Text_analyzer
{
  public static void main(String[] args) throws Exception
  {
        File file = new File("TestFile.txt");

        Scanner sc = new Scanner(file);
        int i = 0, indexOfWord = 0, count = 0;
        List<String> words = new ArrayList<String>();
        List<Integer> wordCount = new ArrayList<Integer>();
 
        while (sc.hasNextLine())
        {
         String word = sc.next();
    
          if(words.contains(word))
          {
          indexOfWord = words.indexOf(word);
          count = wordCount.get(indexOfWord);
          count = count 1;
          wordCount.add(indexOfWord, count);        
          }
          else
          {
          words.add(i,word);
          wordCount.add(i,1);
          i  ;
          }
         }
                  
        sc.close();
        
        int no_of_elements = words.size();
        for(int j = 0; j < no_of_elements; j  )
            System.out.println(words.get(j));
  }
 }


 

Комментарии:

1. если вы используете hasNextLine , вы должны использовать nextLine , а не next

2. Ух ты, сработало сразу. Спасибо.

Ответ №1:

Ваша логика верна;

  1. Проверьте путь к файлу и убедитесь, что он присутствует, или добавьте дополнительную проверку в коде. Путь к файлу
  2. Добавьте обработку исключений для метода new File() в случае, если файл не найден.
      File file = new File("C:\work\TestFile.txt");
    
     Scanner sc = null;
     try {
         sc = new Scanner(file);
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     }
     

Результат: Выходной результат