Создан файл text.txt куда сохранено построчно несколько чисел, первое число - 1.
При попытке считать строку и преобразовать ее в Integer вылезает следующая ошибка:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at com.javarush.task.task13.task1326.Solution$ReadAndSortNumbers.<init>(Solution.java:37)
at com.javarush.task.task13.task1326.Solution.main(Solution.java:17)
Причину которой понять никак не могу. Почему String "1" не получается преобразовать в Integer 1
Также не ясно почему валидатор ругается на незакрытый поток чтения.
package com.javarush.task.task13.task1326;
/*
Сортировка четных чисел из файла
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ReadAndSortNumbers list = new ReadAndSortNumbers(reader.readLine());
list.sort();
list.printEven();
}
static class ReadAndSortNumbers {
String file;
ArrayList<Integer> list;
public ReadAndSortNumbers (String file) throws Exception {
this.file=file;
ArrayList<Integer> readList = new ArrayList<>();
FileInputStream inputStream = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
list.add(Integer.valueOf(line));
}
inputStream.close();
reader.close();
this.list=readList;
}
public void sort () {
for (int i=1; i<list.size();) {
if ((i==0)||(list.get(i-1)<=list.get(i)))
i++;
else {
int temp = list.get(i);
list.set(i, list.get(i-1));
list.set(i-1, temp);
i--;
}
}
}
public void printEven () {
int read = 0;
for (int i=0; i<list.size(); i++) {
read = list.get(i);
if (read % 2 == 0)
System.out.println(read);
}
}
public ArrayList<Integer> getList () {
return list;
}
public String getFileName () {
return file;
}
}
}