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

Работа с файлами

13.11.2017, 10:10. Показов 741. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!
Есть задача:
В файле, содержащем фамилии студентов и их оценки, записать прописными буквами фамилии тех студентов, которые имеют средний балл более “7”.

С файла я считал
Java
1
2
3
4
5
6
7
8
9
10
11
/* Чтение строки */
        
             try (BufferedReader reader = new BufferedReader(new FileReader("D://test.txt")))  {
                String value = reader.readLine();
                
            /*Добавление элемента в массив  */
              ArrayList <String> list = new ArrayList <String>();
                list.add(value);
                System.out.println ("Первый элемент массива '" + list.get(0) + "'");
            //  System.out.println ("Первый элемент массива '" + list.get(1) + "'");
            //System.out.println ("Размер массива '" + Integer.valueOf (list.size()) + "'");
Результат: Первый элемент массива 'Иванов Иван 5,6,5,3,5,9,4'
Далее, отсортировав буквы от чисел
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*      */
                String arr = value;
                String[] items = arr.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s", "").split(",");
 
                int[] results = new int[items.length];
 
                for (int i = 0; i < items.length; i++) {
                    try {
                        results[i] = Integer.parseInt(items[i]);
                        System.out.print ("results[i] '" + results[i] + "'");
                   
                        
                    } catch (NumberFormatException nfe) {
                        //NOTE: write something here if you need to recover from formatting errors
                    };
                }
                
                /*     */
Результат: results[i] '6'results[i] '5'results[i] '3'results[i] '5'results[i] '9'results[i] '4'
Побывал и по другому
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
/* Все строки файла засунуты в массив*/
                  
                    String str_1 = linesAsArray[j];
                       String str_2 = linesAsArray[j];
                        str_1 = str_1.replaceAll("[^0-9]+", "");
                        str_2 = str_2.replaceAll("[^а-яА-Яa-zA-Z]", "");
 
                        char [] c = str_1.toCharArray ();
                        double average = 0;
                        if (c.length > 0)
                        {
                             System.out.println(" c.length "+ c.length);
                            double sum = 0;
                            for (int j1 = 0; j1 < c.length; j1++) {
                                 sum += c[j1];
                            }
                            average = (sum / c.length);
                            
                            System.out.println("average "+ average);
                            System.out.println("c.length "+ c.length);
                            System.out.println("sum "+ sum);
                            System.out.println("c[0] "+ c[0]);
                            System.out.println("c[1] "+ c[1]);
                            System.out.println("c[2] "+ c[2]);
                            System.out.println("c[3] "+ c[3]);
                            System.out.println("c[4] "+ c[4]);
                            System.out.println("c[5] "+ c[5]);
                            System.out.println("c[5] + c[4] "+ c[5] + c[4]);
                        }
average 53.285714285714285
c.length 7
sum 373.0
c[0] 5
c[1] 6
c[2] 5
c[3] 3
c[4] 5
c[5] 9
c[5] + c[4] 95
И так
Java
1
2
3
4
5
6
 ArrayList<String[]> allArrays = new ArrayList<String[]>();  
                allArrays.add(names);
               allArrays.add(values);
                for (String a[]:allArrays){
                    for (String b:a){
                  System.out.println("allArrays "+b);
Результат:allArrays 5653594
allArrays ИвановИван
Короче с задачей не справился
Подскажите где выход
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2017, 10:10
Ответы с готовыми решениями:

Работа с файлами
Задание: Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла не ровна нулю. Файл f содержит столько же...

Работа с файлами
Помогите пожалуйста изменить код. нужно что бы программа находила в тексте все цифры, идущие подряд public void textFromfile() throws...

Работа с файлами
Здравствуйте.Подскажите пожалуйста.Как присвоить записываемому тексту в файл .txt, скажем некий индекс что бы потом по этому индексу можно...

12
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 10:45
в чем вопрос то?
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
13.11.2017, 11:01  [ТС]
Вопрос в том, что не могу вывести среднее
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 11:41
https://www.youtube.com/watch?v=w9Im4aAhvXE
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
13.11.2017, 12:11  [ТС]
Java
1
2
System.out.println("c[5] "+ c[5]);
 System.out.println("c[5] + c[4] "+ c[5] + c[4]);
Он мне складывает как String, а мне чтобы посчитать среднее intы нужны

Добавлено через 6 минут
Java
1
char [] c = str_1.toCharArray ();
нужно в int как то переделать что бы c[5] + c[4] "+ c[5] + c[4] выдало не 94 а 14
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 12:14
Цитата Сообщение от Str-137 Посмотреть сообщение
results[i] = Integer.parseInt(items[i]);
это что?
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
13.11.2017, 12:30  [ТС]
Java
1
2
results[i] = Integer.parseInt(items[i]);
System.out.println ("results '" + results[3] + results[2]+ "'");
Выдает :results '35'

Добавлено через 3 минуты
а можно как то типа так?
int a = (int)( results[3] );
тоже не работает
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 12:37
Java
1
2
3
4
5
6
7
8
9
10
11
12
        String s = "aaa bb 1,2,3,4,5";
        Pattern p = Pattern.compile("((\\d+,?)+)");
        Matcher m = p.matcher(s);
        if (!m.find()) {
            throw new IllegalArgumentException("Illegal string format");
        }
        int position = m.start();
        String name = s.substring(0, position).trim();
        OptionalDouble average = Arrays.stream(s.substring(position).split(",\\s*"))
                .filter(StringUtils::isNumeric)
                .map(Integer::parseInt).mapToInt(Integer::intValue).average();
        average.ifPresent(avg -> System.out.println(name + " : " + avg));
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
13.11.2017, 12:41  [ТС]
average 53.285714285714285 - среднее почему то получается
c.length 7 - длина 7
sum 373.0 а сумма такая

Добавлено через 4 минуты
Я рассматривал тему паттернов, но у меня ругается
OptionalDouble average1 = Arrays.stream(s.substring(position).spli t(",\\s*"))
.filter(StringUtils::isNumeric)
на StringUtils
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 12:43
гугл для кого сделан?
кроме того, можешь сам эту функцию написать
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
13.11.2017, 12:55  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
гугл для кого сделан?
кроме того, можешь сам эту функцию написать
я два дня сидел голову ломал как мне решить задачу, Вы мне подкидываете новую, на мол управился)))) Спасибо)))
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.11.2017, 13:13
Цитата Сообщение от Str-137 Посмотреть сообщение
я два дня сидел голову ломал как мне решить задачу, Вы мне подкидываете новую, на мол управился)))) Спасибо)))
удали эту строку, разбери остальной код, потом подумай, нужна ли она там и для чего
0
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 21
14.11.2017, 09:13  [ТС]
Цитата Сообщение от Str-137 Посмотреть сообщение
double sum = 0;
for (int j1 = 0; j1 < c.length; j1++) {
sum += c[j1];
}
average = (sum / c.length);
Одну ошибку нашел тут
если поставить
double sum = 0;
for (int j1 = 0; j1 < c.length; j1++)
{
sum = 0 + c[j1];
}
average = (sum / c.length);
Считает среднее, но берется откуда то лишняя цифра
allArrays 5653615594 сумма равна 49, а sum в проге выдает 52.0

Добавлено через 29 минут
Цитата Сообщение от Str-137 Посмотреть сообщение
Сообщение от Str-137
double sum = 0;
for (int j1 = 0; j1 < c.length; j1++) {
sum += c[j1];
}
average = (sum / c.length);
Одну ошибку нашел тут
если поставить
double sum = 0;
for (int j1 = 0; j1 < c.length; j1++)
{
sum = 0 + c[j1];
}
average = (sum / c.length);
Считает среднее, но берется откуда то лишняя цифра
allArrays 5653615594 сумма равна 49, а sum в проге выдает 52.0
в этом участке кода ошибка, неправильно сумму считает, по своему

Добавлено через 17 часов 50 минут
Решил данную задачу через паттерн, но по своему коду все равно вопрос остался, если время будет сам поковыряю если нет - препода замучаю)))))
Спасибо за помощь)))))

Добавлено через 1 час 34 минуты
А как мне сюда вставить условие проверки типа
if(avg>7)
System.out.println(name + " : " + avg));

String s = linesAsArray[j];
Pattern p = Pattern.compile("((\\d+,?)+)");
Matcher m = p.matcher(s);//Объект «Искатель» является двигателем, который
//интерпретирует шаблон и выполняет операции сопоставления с входной строкой.
if (!m.find()) {// m.find () возвращает true, если шаблон совпадает с любой частью текста.
throw new IllegalArgumentException("Illegal string format");
}
int position = m.start();//вернет индекс первого символа, совпавшего
String name = s.substring(0, position).trim();//возвращает новую строку, которая является подстрокой данной строки.
/*OptionalDouble Объект контейнера, который может содержать или не содержать double значение*/

OptionalDouble average = Arrays.stream(s.substring(position).spli t(",\\s*"))

// .filter(StringUtils::isNumeric)
.map(Integer:arseInt).
mapToInt(Integer::intValue).
average();
average.ifPresent(avg -> System.out.println(name + " : " + avg));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2017, 09:13
Помогаю со студенческими работами здесь

Работа с файлами
Всем привет, вообщем с Java у меня трудно тому простите за глупый вопрос. У меня есть меню Добавить Расход Поиск Расходов Добавить...

Работа с файлами
Помогите решить задание. Очень нужно Дан исходный символьный файл, в котором находится текст, состоящий не менее чем из 30 слов. Написать...

работа с файлами
Ребята никак не могу связать программу с файлом( Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным...

Работа с файлами
Проблема такая написал прогу она открывает фаил (randomAccessFile) на чтение и запись файл существует, записывает массив байт (1,2,3,4,5,6)...

Работа с файлами
Всем привет. Задали мне лабу и у меня возник вопрос, к примеру я хочу дополнить инфу о каком либо счете, как мне это сделать так, чтобы...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru