#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:
Ваша логика верна;
- Проверьте путь к файлу и убедитесь, что он присутствует, или добавьте дополнительную проверку в коде. Путь к файлу
- Добавьте обработку исключений для метода new File() в случае, если файл не найден.
File file = new File("C:\work\TestFile.txt"); Scanner sc = null; try { sc = new Scanner(file); } catch (FileNotFoundException e) { e.printStackTrace(); }
Результат: Выходной результат