import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author user
*/
public class Exercise1 {
public static void main(String[] args) throws FileNotFoundException {
int numOfLines = 0;
int numOfWords = 0;
Scanner scan1 = new Scanner(new File("C:/Users/user/Downloads/exercise.txt"));
ArrayList<String> list = new ArrayList<>();
int[] arr = new int[1000];
while (scan1.hasNextLine()) {
String s = scan1.nextLine();
for (int i = 0; i < s.length(); i++) {
if (!Character.isAlphabetic(s.charAt(i))) {
} else {
//is an alphabet
int j = i; //stop index;
//find the complete word
while (Character.isAlphabetic(s.charAt(j))) {
j++;
if (j == s.length()) {
break;
}
}
i = j; //set to last index
//check if list has the string
if (list.contains(s.substring(i, j))) {
list.add(s.substring(i, j));
System.out.println(list.size());
arr[list.indexOf(s.substring(i, j))]++;
} else {
arr[list.indexOf(s.substring(i, j))]++;
}
numOfWords++;
}
}
}
System.out.println(Arrays.toString(list.toArray()));
System.out.println(numOfWords);
}
}
Я пытался извлечь текст из текстового файла, содержащего буквы, цифры и специальные символы, но содержит метод и метод add , похоже, путают друг друга.
Когда строка слова найдена, я заставил код работать, проверив, содержится ли строка слова в ArrayList, если это так, индекс конкретной строки будет использоваться как точка для приращения в другой массив (для записи количества слов).
Но когда я запускаю код, выдается исключение ArrayIndexOutOfBoundException, означающее, что полученный индекс равен -1 (это произойдет, если строка не найдена и ArrayList неявно вернет -1), но когда я попытался протестировать При существовании строки в ArrayList результат равен true , что указывает на то, что ArrayList имеет определенную строку, но все равно возвращает -1 при вызове для индекса строки. Пожалуйста, помогите, большое спасибо!