Добрый день! Не могу понять, почему считанные из файла числа, приведенные к символам (и сохраненные в список <Character>) выводятся неверно, если выводить без цикла foreach? Получается пустой список. Далее из-за этого получаю NumberFormatException.
И почему через foreach он выводится корректно, что за особенность списка из символов?
В итоге не могу привести char к int и работать со списком, не понимаю что у меня находится в списке.
package com.javarush.task.task13.task1326;
/*
Сортировка четных чисел из файла
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) throws IOException, NumberFormatException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream input = new FileInputStream(reader.readLine()); //читаем путь к файлу
ArrayList<Character> list = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
int i;
while ((i = input.read()) != -1) {
list.add((char) i); //читаем файл и посимвольно добавляем в список
}
System.out.println(list); //проверочный вывод. выводит неверно - почему?
for (char c : list) {
System.out.print(c); //проверочный вывод. выводит верно
list2.add(Integer.parseInt(c + ""));
} //в итоге приводит к ошибке
/*приводим каждый символ к строке и потом к int, выдает NumberFormatException.
не получается корректно привести char к String или int. Пытался удалять
пробелы (пустые элементы), но не вышло, числа из файла исчезают, это видно
если вывести список char до попытки приведения к int или String и после. */
Collections.sort(list2);
for (int j : list2)
if (j % 2 == 0)
System.out.println(j);
//выводим в консоль четные, отсортированные по возрастанию
input.close();
// напишите тут ваш код
}
}