JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/По выводу все идеально но не принимает, подскажите почему...
Rus
31 уровень
  • 13.08.2019
  • 600просмотров
  • 5комментариев

По выводу все идеально но не принимает, подскажите почему

Вопрос по задаче Округление чисел
Java Core,  8 уровень,  11 лекция
Обсуждается

Считать с консоли 2 имени файла.
Первый файл содержит вещественные(дробные) числа, разделенные пробелом. Например, 3.1415.
Округлить числа до целых и записать через пробел во второй файл.
Закрыть потоки.

Принцип округления:
3.49 => 3
3.50 => 4
3.51 => 4
-3.49 => -3
-3.50 => -3
-3.51 => -4

Требования:
  • Программа должна два раза считать имена файлов с консоли.
  • Для первого файла создай поток для чтения. Для второго - поток для записи.
  • Считать числа из первого файла, округлить их и записать через пробел во второй.
  • Должны соблюдаться принципы округления, указанные в задании.
  • Созданные для файлов потоки должны быть закрыты.
package com.javarush.task.task18.task1820; import java.io.*; import java.util.ArrayList; public class Solution { public static void main(String[] args) throws IOException { ArrayList <String>arr=new ArrayList<>(); BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String s1=bf.readLine(); String s2=bf.readLine(); BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new FileInputStream(s1), 1200); System.setIn(bufferedInputStream1); BufferedReader bf2=new BufferedReader(new InputStreamReader(System.in)); FileOutputStream fos=new FileOutputStream(s2); String i; while((i = bf2.readLine())!= null) { arr.add(i); } for(String s:arr){ byte[]b=(Math.round(Double.parseDouble(s))+" ").getBytes(); fos.write(b); } bf.close(); bufferedInputStream1.close(); bf2.close(); fos.close(); } }
0
Комментарии (5)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Влад Лохматов
Уровень 24
13 августа 2019, 21:57
Первый файл содержит вещественные(дробные) числа, разделенные пробелом.
while((i = bf2.readLine())!= null) {
            arr.add(i);
}
В этом нет смысла↑ Нужно считать всю строку и разделить с помощью .split(" ")
0
Rus
Уровень 31
17 августа 2019, 16:56
Спасибо за ответ! Эту задачку я еще так и не решил... Как нибудь попозже попробую этот вариант
0
Виталий Яковлев
Уровень 41
13 августа 2019, 06:23
Считайте сразу весь файл в массив байт, затем поместите все это в массив строк разделяя по пробелам String[] strArrDouble = new String(data).split(" "); Затем создайте стрингбилдер и помещайте туда элементы из массива строк предварительно округлив и добавляя пробел, после запишите стрингбилдер в файл .toString().getBytes();
0
Rus
Уровень 31
13 августа 2019, 06:25
я уже посмотрел другие решения, но почему мой не годится?
0
Rus
Уровень 31
13 августа 2019, 06:27
просто хочется знать причину почему валидатор не принимает такой код
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRush JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush