Так что прямо сейчас я получаю синтаксическую ошибку, когда пытаюсь использовать метод, который не возвращает какое-либо значение (пустое), и принимает аргументы ArrayList<E> fileList
. Моя цель - взять текстовый файл с объектами String и Integer, а в методе remove, если он найдет Integer, он будет удален из списка. Это значит, что он оставит только строки в конце. Вот код, который показывает, как чтение файла, и removeInts
метод, который я пытаюсь использовать:Получение ошибки синтаксиса при попытке использовать метод с использованием ArrayLists?
@SuppressWarnings("unchecked") //IDE told me to add this for adding objects to the ArrayList
public <E> ArrayList<E> readFile(){
ArrayList<E> fileList = new ArrayList<E>();
try {
Scanner read = new Scanner(file); //would not let me do this without error handling
while(read.hasNext()){ //while there is still stuff to add it will keep filling up the ArrayList
fileList.add((E)read.next());
}
} catch (FileNotFoundException e) {
System.out.println("File not found!");
e.printStackTrace();
}
removeInts(fileList);
return fileList;
}
public void removeInts(ArrayList<E> fileList){
for(int i = 0; i < fileList.size(); i++){
if(fileList.get(i) instanceof Integer){
fileList.remove(i);
}
else{
//does nothing, does not remove the object if it is a string
}
}
Я получаю синтаксическую ошибку в removeInts(fileList)
.
Пожалуйста, всегда вывешиваем полное сообщение об ошибке, слово в слово с вашим вопросом. –
Обратите внимание, что 'read.next()' * always * возвращает 'String'. В этом списке никогда не будет никаких объектов Integer. – RealSkeptic
Этот код не имеет большого смысла. Scanner.next() возвращает String, а не E. Поэтому в списке никогда не будет целых чисел, и метод должен вернуть список. Вы не должны игнорировать предупреждения компилятора. Они говорят вам, что ваш код неправильный. –