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

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

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

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

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

Подскажите литературу для решения задачи!
Добрый день! Подскажите, что можно прочитать для выполнения задания(вложенный...

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

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

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

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

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

Решение

читаем построчно, разбиваем (split) по пробелу и каждый элемент массива кастуем в дабл, округляем и т.д.
1
Wonderio619
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 67
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__
470 / 326 / 106
Регистрация: 17.02.2014
Сообщений: 2,263
16.06.2018, 08:44 #4
делай split(".") numbers и 17 строка упростится
0
iSmokeJC
Модератор
753 / 643 / 311
Регистрация: 21.10.2017
Сообщений: 2,167
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
894 / 645 / 218
Регистрация: 28.04.2013
Сообщений: 1,845
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
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 67
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

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

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

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


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

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

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