Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
Wonderio619
0 / 0 / 3
Регистрация: 25.03.2016
Сообщений: 63
#1

Подкиньте идею для решения задачи - Java

15.06.2018, 19:28. Просмотров 187. Ответов 6
Метки нет (Все метки)

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

Округлить числа и записать в другой файл не проблема. Но я вот думаю, каких их "вытянуть" из файла и в виде double.
То есть, нужно считывать от начала до пробела, потом от пробела до следующего пробела, и это считанное переганять в double, ну а потом округлять.
Как можно такое сделать ? Именно уловить этот "диапазон" между двумя пробелами и принимать его как double переменную ?
http://www.cyberforum.ru/java/thread1514476.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2018, 19:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подкиньте идею для решения задачи (Java):

Как лучше написать класс(т.е. саму структру)для решения слудующей задачи:
Задача. Объявление массивов В языке Java любой объявленный массив является...

Подкиньте ТЗ по многопоточности
Здравствуйте. Недавно закончил изучение этой темы, пытаюсь применить полученные...

Подкиньте идеи как разнообразить программку!
Всем привет! Написал программку быстро, очень сырая! Подскажите, как...

нужно лекарство на идею 4.0.3
вопрос в заголовке! всем спасибо

Подкиньте идею решения
{(x^a + y^a)}^{\frac{1}{a}} > {(x^b + y^b)}^{\frac{1}{b}} x > 0, y > 0, 0 < a...

6
Welemir1
Автоматизируй это!
678 / 429 / 195
Регистрация: 30.03.2015
Сообщений: 1,815
15.06.2018, 19:35 #2
Лучший ответ Сообщение было отмечено Wonderio619 как решение

Решение

читаем построчно, разбиваем (split) по пробелу и каждый элемент массива кастуем в дабл, округляем и т.д.
1
Wonderio619
0 / 0 / 3
Регистрация: 25.03.2016
Сообщений: 63
15.06.2018, 21:42  [ТС] #3
Welemir1,
Думаю, это оно ))
Попробую сделать ...

Добавлено через 1 час 51 минуту
Welemir1, получилось !)
Может немного намудрил, но вроде норм.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 
        String file1 = reader.readLine();
        String file2 = reader.readLine();
 
        BufferedInputStream stream1 = new BufferedInputStream(new FileInputStream(file1));
        DataOutputStream stream2 = new DataOutputStream((new FileOutputStream(file2)));
 
        byte[] numbers = new byte[stream1.available()];
        stream1.read(numbers);
        stream1.close();
 
        String value = new String(numbers);
        for (String s : value.split(" ")) {
            long x = Math.round(Double.valueOf(s));
            stream2.writeBytes(Long.toString(x)+" ");
        }
        stream2.close();
    }
}
Спасибо за идею
0
Aviz__
331 / 227 / 89
Регистрация: 17.02.2014
Сообщений: 1,735
16.06.2018, 08:44 #4
делай split(".") numbers и 17 строка упростится
0
iSmokeJC
Модератор
549 / 507 / 275
Регистрация: 21.10.2017
Сообщений: 1,827
16.06.2018, 17:32 #5
А не проще
Java
1
2
3
4
5
Scanner scan = new Scanner(new File ("test.txt"));
while(scan.hasNextDouble){
double x = scan.nextDouble();
...
}
?
0
reisal78
891 / 642 / 218
Регистрация: 28.04.2013
Сообщений: 1,835
17.06.2018, 23:36 #6
Wonderio619,


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
import static java.nio.file.StandardOpenOption.APPEND;
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.WRITE;
 
public class RoundExample {
    public static void main(String[] args) throws IOException {
        Files.write(Paths.get("output.txt"),
                Files.readAllLines(Paths.get("input.txt")).stream().flatMap((Function<String, Stream<String>>) line ->
                        Arrays.stream(line.split("\\s+")).parallel().map(value -> String.valueOf(Math.round(Double.valueOf(value))))).collect
                        (Collectors.toList()), CREATE, WRITE, APPEND);
    }
}
Только не просите объяснить что тут происходит

Добавлено через 14 минут
upd: пишет в строку, через пробел

Java
1
2
3
4
5
6
7
8
9
10
11
public class RoundExample {
    public static void main(String[] args) throws IOException {
        Files.write(
                Paths.get("output.txt"),
                Files.readAllLines(Paths.get("input.txt")).stream().flatMap(line ->
                        Arrays.stream(line.split("\\s+")).parallel().map(value -> String.valueOf(Math.round(Double.valueOf(value))))).collect
                        (Collectors.joining(" ")).getBytes(),
                CREATE, WRITE, APPEND
        );
    }
}
0
Wonderio619
0 / 0 / 3
Регистрация: 25.03.2016
Сообщений: 63
18.06.2018, 01:07  [ТС] #7
reisal78, жесть ))
Моё решение хоть читается легче.
0
18.06.2018, 01:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2018, 01:07
Привет! Вот еще темы с решениями:

Идею для процедуры подкиньте)
Доброго времени, друзья. Встала задача написать такую вот процедуру:...

Подкиньте идею для программы
Программа должна быть на среднюю или высокую сложность. Говорите любые идеи,...

Подкиньте идею для дипломной
Подкиньте идею для дипломной по 1С

Пожалуйста, подкиньте идею для проекта
Нужно написать программу на С++ с использованием функций и динамических...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru