@JML96

Как правильно считывать из файла и записывать в файл числа (I/O)?

Записать в файл numbers поочерёдно 100 положительных и 100 отрицательных случайных целых чисел, перечислив их через пробел. Затем прочитать этот файл и раскидать прочитанные числа в 2 файла: positive_numbers и negative_numbers, с положительными и отрицательными числами соответственно.
Какая причина незаписи в файл numbers_positive именно положительных чисел?
И как можно аналогично записать отрицательные?
public static void main(String[] args) {
        File file = new File("D:/numbers.txt");

        try (FileWriter fw = new FileWriter(file, true)) {
            for (int i = 0; i <= 100; i++) {
                fw.write(" " + getRandomNumber(1, 100));
            }
            for (int i = 0; i <= 100; i++) {
                fw.write(" " + getRandomNumber(-1, -100));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        try (FileReader fr = new FileReader("D:/numbers.txt");
             FileWriter fwnp = new FileWriter("D:/numbers_positive.txt");
             FileWriter fwnn = new FileWriter("D:/numbers_negative.txt")) {
            int c = fr.read();
            while (c > 0) {
                c = fr.read();
                fwnp.write(c);
                fwnp.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static int getRandomNumber(int a, int b) {
        if (b < a)
            return getRandomNumber(b, a);
        return a + (int) ((1 + b - a) * Math.random());
    }

}
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Метод .read() читает один символ.
Не одно число, не одну строку. Один символ.

Попробуйте использовать Scanner. У него есть подходящий метод .nextInt()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽