task13.task1326;

Компилируется, сортирует и выводит на экран целые числа с новых строк по возрастанию как и требуется заданием, но валидацию не проходит…

package com.javarush.task.task13.task1326;

/* 
Сортировка четных чисел из файла
*/

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Solution {
    public static void main(String[] args) throws IOException {
        // напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        FileInputStream in = new FileInputStream(reader.readLine());

        ArrayList<Integer> list = new ArrayList<Integer>();

        while (in.available() > 0) {
            int i = in.read();
            if (i % 2 == 0) list.add(i);
        }

        Collections.sort(list);

        for (Integer x: list) {
            System.out.println(x);
        }

        reader.close(); in.close();
    }
}

6 комментариев

LastLost
в условии — из файла…
BlackDox
Я и так беру цифры из файла, затем сортирую их и вывожу на консоль. Что не так то?
LastLost
сорри не то посмотрел :(
попробуй не использовать Collections.sort()
lichMax
  • lichMax
  • 0
  • Комментарий отредактирован 2017-07-03 14:44:36 пользователем lichMax
глянь предыдущую тему из новых. Только что человек разбирался с этой задачей.
BlackDox
  • BlackDox
  • 0
  • Комментарий отредактирован 2017-07-03 16:11:26 пользователем BlackDox
Написал какую-то хрень и Валидатор принял!..
public class Solution {
    public static void main(String[] args) throws IOException {
        // напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(reader.readLine())));

        ArrayList<Integer> list = new ArrayList<Integer>();

        while (in.ready()) {
            try {
                String s = in.readLine();
                if (!s.isEmpty()) {
                    int x = Integer.parseInt(s);
                    if (x % 2 == 0) list.add(x);
                }
            } catch (IOException e) {
                e = null;
            } catch (NumberFormatException e) {
                e = null;
            }
        }
        reader.close(); in.close();

        Collections.sort(list);

        for (Integer x : list) {
            System.out.println(x);
        }
    }
}
32xlevel
Смею предположить, что ошибка в первом случае в том, что вы читаете байты, а не конкретные числа.
Во втором случае это и было исправлено BufferedReader, который читает из файла непосредственно строки.
Я настоятельно рекомендую Вам разобраться с кодом из второго примера.
А также советую использовать буферизированные версии поток чаще :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.