Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 4

Определить наименьшее время

29.05.2015, 23:06. Показов 938. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, помогите пожалуйста.

Есть текстовый файл. В нем записано вот это:
"Иванов","2минуты 12сек"
"Кузнецов","1минута 10сек"
"Петров","2минуты 33сек"
"Сидоров","2минуты 44сек"

Нужно определить самого быстрого бегуна.

Получился примерно такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package run;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Run {
    private static Logger log = Logger.getLogger(Run.class.getName());
 
    public static void main(String[] args) {
        
       
        ArrayList<Integer> time = new ArrayList<Integer>();
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try{
        reader = new BufferedReader(new FileReader("Путь к файлу")); 
        writer = new BufferedWriter(new FileWriter("Путь к файлу")); 
 
        String buffer = null;
        while ((buffer = reader.readLine()) != null){
            String parseStr[] = buffer.split("[ \", ]+=");
            try{
            time.add(Integer.parseInt(parseStr[1]));
            }
            catch(Exception e){
                log.log(Level.SEVERE, "Exception parseStr[1]: ", e);
            }
        }
        }
       
        catch(IOException | NumberFormatException e){
            System.err.println("Ошибка в коде:" + " " + e);
            log.log(Level.SEVERE, "Exception: ", e);
         }
        finally{
            try {
                writer.flush();
                writer.close();
                reader.close();
            } catch (IOException ex) {
                log.log(Level.SEVERE, "Exception: ", ex);
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2015, 23:06
Ответы с готовыми решениями:

Вводятся 3 числа и необходимо определить наибольшее и наименьшее
Всем привет) Задача такая. Вводят 3 числа и необходимо определить наибольшее и наименьшее. Для двух чисел технология понятна это...

Определить в последовательности наименьшее число среди чисел, больших 20
Вводится последовательность из N вещественных чисел. Определить наименьшее число,среди чисел больше 20. Накидайте код,пожалуйста)Утром...

Даны три числа а, в, с в шестнадцатеричном виде Определить наименьшее из них
Даны три числа а, в, с в шестнадцатеричной cистеме. Определить наименьшее из них. 1. а=A, в=22, с=41 2. а=4C, в=5, с=37 3. а=B, в=4B,...

6
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.05.2015, 00:08
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
 
public class Launcher {
    private static final Pattern TIME_PATTERN = Pattern.compile("^(\\d+).*?(\\d+).*?$");
 
    private static String stripQuotes(String data) {
        return data.substring(1, data.length()-1);
    }
 
    private static long parseTime(String data) {
        final Matcher matcher = TIME_PATTERN.matcher(stripQuotes(data));
        if (matcher.matches()) {
            return Integer.parseInt(matcher.group(1)) * 60 + Integer.parseInt(matcher.group(2));
        }
        return 0;
    }
 
    public static void main(String[] args) throws IOException {
        final Map<String, Long> results = Files
                .lines(Paths.get("data_file.txt"))
                .map(s -> s.split(","))
                .collect(Collectors.toMap(
                        s -> stripQuotes(s[0]),
                        s -> parseTime(s[1])
                ));
        System.out.println(results);
        
        final Optional<Map.Entry<String, Long>> minimum = results.entrySet().stream()
                .min((a, b) -> a.getValue().compareTo(b.getValue()));
        final Optional<Map.Entry<String, Long>> maximum = results.entrySet().stream()
                .max((a, b) -> a.getValue().compareTo(b.getValue()));
 
        System.out.println(minimum);
        System.out.println(maximum);
    }
}
0
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 4
30.05.2015, 00:35  [ТС]
lemegeton, спасибо большое, что откликнулись! Но у меня некоторые проблемы=(

0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.05.2015, 11:49
Код для Java 8, у вас, похоже, более ранняя версия.
0
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 4
15.06.2015, 20:23  [ТС]
Написал код для данной задачи, но код нужно немного изменить:
"минуты от секунд можно отделять split-ом по пробелу, а потом уже числа выбирать, что тоже гораздо удобнее сделать с помощью регулярных выражений."
Пожалуйста подкорректируйте код. У меня не получается никак.
Вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package zabeg1;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;
import java.io.*;
public class Zabeg1 {
 
      private static Logger log = Logger.getLogger(Zabeg1.class.getName());
 
    public static void main(String[] args) {
        
        long timestart = System.currentTimeMillis();
        ArrayList<Integer> min = new ArrayList<Integer>();
        ArrayList<Integer> sec = new ArrayList<Integer>();
        ArrayList<String> fam = new ArrayList<String>();
        
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try{
                
 
        reader = new BufferedReader(new FileReader("D:/Java/Zabeg1/src/zabeg1/data.txt")); //входной файл
        writer = new BufferedWriter(new FileWriter("D:/Java/Zabeg1/src/zabeg1/data1.txt")); //выходной файл
        
        String text = "Cамый быстрый:" + " ";
        String temp = "";
        String tm = "";
        String ts = "";
          int k, d;
        String buffer = null;
        while ((buffer = reader.readLine()) != null){//цикл для вычитывания файла
            String parseStr[] = buffer.split("\"");
            try{
              fam.add(parseStr[1]); //фам
              temp = parseStr[3];
              String s = "";
            k = 0;
             d = 0;
               char c;
             
              
             for(int i = 0; i < temp.length(); i++)
             {
               c = temp.charAt(i);
                if(Character.isDigit(c))
                {
                    s = s + c;
                }
                else
                {
                      
                    if(k == 0)
                    {
                    min.add(Integer.parseInt(s));
                    k = k + 1;
                     s = "";
                    }
                }
             }
                                      
           if(k == 1)
                    {
                    sec.add(Integer.parseInt(s));
                    k = k + 1;
                    
                    s = "";
                    }
            }
            catch(Exception e){
                log.log(Level.SEVERE, "Exception parseStr[1]: ", e);
            }
        }
        
        System.out.println(quickest(min,sec,fam));
 
        writer.write(text + quickest(min,sec,fam));//записываем в файл текст        
        }
        catch(IOException | NumberFormatException e){
            //логирование
            log.log(Level.SEVERE, "Ошибка при попытке выполнить программу: ", e);
            
        }
        finally{
            try {
                writer.flush();
                writer.close();
                reader.close();
            } catch (IOException ex) {
                log.log(Level.SEVERE, "Ошибка при попытке сбросить поток, либо закрыть его: ", ex);
            }
        }
        //время работы
        long timeend = System.currentTimeMillis();
        System.out.println("Время работы программы: " +( timeend-timestart) + " мс");
    }
 
// функция по нахождению наименьшего времени
// min - минуты
// sec - секунды
// fam - имя участника
static String quickest(List<Integer> min, List<Integer> sec, List<String> fam) {
 
        int time = 99999, i = 0;
        String f = "";
        int d, n = min.size();
        for ( i = 0; i < n; i++) { 
            d = min.get(i) * 60+sec.get(i);
            if(time > d)
            {
            time = d;
            f = fam.get(i);
                }
            
        }
 
      return f;
    }
    
}
0
0 / 0 / 0
Регистрация: 14.06.2015
Сообщений: 5
16.06.2015, 09:09
Что за магические переменные k, d, c? Отрефактори код с осмысшенными именами переменных.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.06.2015, 09:12
от себя добавлю тоже
- String buffer = null; -- тут явно должен быть StringBuilder
- код не форматирован и нечитабелен (в любой ide есть функция форматирования кода)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2015, 09:12
Помогаю со студенческими работами здесь

Определить наименьшее среди положительных и наибольшее среди отрицательных введенных чисел
Помогите написать программу: пользователь вводит числа заканчивая введение нулем. Определить наименьшее среди положительных и больше среди...

Определить время, затраченное на запрос
Есть некая таблица с данными о работниках. SLQ запрос выводит данные об определенных работниках. Нужно написать программу, определяющую...

Как определить платформу во время исполнения программы?
Коллеги ! Кто знает, как во время исполнения программы на Java определить под какой операционкой она работает: Windows, Unix или Linux ?

Определить наименьшее время до совпадения стрелок
Даны целые числа h,m (0&lt;h&lt;=12,0&lt;=m&lt;=59),указывающие момент времени: h часов,m минут.Определить наименьшее время(число полных минут),которое...

Определить наименьшее время до того как часовая и минутная стрелки совпадут
Даны целые числа h,m (0&lt;h&lt;=12,0&lt;=m&lt;=59),указывающие момент времени: h часов,m минут.Определить наименьшее время(число полных минут),которое...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru