Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 14.04.2016
Сообщений: 55

Найти в текстовом файле строку, в которой количество слов наибольшее, и вывести ее

14.04.2018, 16:55. Показов 1850. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо найти в текстовом файле строку, в которой количество слов наибольшее и вывести ее.
Я считываю файл, записываю строки в arraylist, определяю количество слов в каждой. Не знаю как правильно теперь сравнить и вывести строку
Вот код:
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
package com.company;
import java.io.*;
import java.util.ArrayList;
 
public class options {
    ArrayList<Integer> numbers = new ArrayList<>();
    ArrayList<String> lines = new ArrayList<>();
    //чтение из файла строк и запись в line
    private void fileRead() {
        try {
            File file = new File("D://file.txt");
            //создаем объект FileReader для объекта File
            FileReader fr = new FileReader(file);
            // создаем BufferedReader с существующего FileReader для построчного считывания
            BufferedReader reader = new BufferedReader(fr);
            // считаем сначала первую строку
            String line;
            while ((line = reader.readLine()) != null) {
                lines.add(line);
            }
            System.out.println(lines);
            String[] str = new String[lines.size()];
 
        }catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //пытаюсь записать количество слов в каждой строке в numbers
        private void str(){
            fileRead();
            for (int i=0;i<lines.size(); i++) {
                String st = lines.get(i);
                int count=0;
                if (st.length() !=0){
                    count++;
                    //Проверяем каждый символ, не пробел ли это
                    for (int it = 0; it < st.length(); it++) {
                        if(st.charAt(it) == ' '){
                            //Если пробел - увеличиваем количество слов на 1
                            count++;
                        }
                    }
                }
                numbers.add(count);
            }
            System.out.println("колво"+numbers);
        }
        //пытаюсь опредлелить наибольшее число записанное в numbers
        public int max_counter() {
            str();
            int max_count = 0;
            for (int i=0;i<numbers.size();i++){
                if (numbers.get(i)>numbers.get(i+1)){
                        max_count=numbers.get(i);
                } else max_count=numbers.get(i+1);
            }
            return (max_count);
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2018, 16:55
Ответы с готовыми решениями:

В текстовом файле найти строку, в которой наибольшее количество букв 'А' или 'а', и вывести его на экран
В текстовом файле найти строку, в которой наибольшее количество букв 'А' или 'а', и вывести ее на екран.

Найти строку текста, в которой присутствует наибольшее количество одинаковых слов
Найти строку текста, в которой присутствует наибольшее количество одинаковых слов Как это сделать ? Добавлено через 30 секунд ...

Необходимо в текстовом файле найти определенную строку, в которой имеется спец.символ и удалить строку
К примеру в файле есть записи: Привет Привет Хороший День Мне нужно, что бы запись с символом &quot;Hi&quot; была удалена, или с...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.04.2018, 17:05
Ananazzz, пробегаешь по листу циклом, количество слов в каждой строке заносишь в массив, в нем ищешь max, выводишь из листа строку с индексом этого элемента...

Добавлено через 3 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
 
        List<String> list = new ArrayList<>();
        list.add("dsfasdf sfd as asfdas  sdf as sfd asf asdf asdf fas asd");
        list.add("dsfasdf sfd as asfdas  sdf kljl lkh lkjlkh  as sfd asf asdf asdf fas asd");
        list.add("dsfasdf sfd as asfdas  sdf as sfd asf asdf asd");
 
        int max = 0;
        int index = 0;
        for (int i = 0; i < list.size(); i++) {
            int len = list.get(i).split(" ").length;
            if (max < len) {
                max = len;
                index = i;
            }
        }
        System.out.println(list.get(index));
    }
Типа
0
0 / 0 / 1
Регистрация: 14.04.2016
Сообщений: 55
14.04.2018, 18:07  [ТС]
Подскажите в чем ошибка, пожалуйста
Не выводит строку
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
package com.company;
import java.io.*;
import java.util.ArrayList;
 
public class options {
    ArrayList<Integer> numbers = new ArrayList<>();
    ArrayList<String> lines = new ArrayList<>();
    //чтение из файла строк и запись в line
    private void fileRead() {
        try {
            File file = new File("D://file.txt");
            //создаем объект FileReader для объекта File
            FileReader fr = new FileReader(file);
            // создаем BufferedReader с существующего FileReader для построчного считывания
            BufferedReader reader = new BufferedReader(fr);
            // считаем сначала первую строку
            String line;
            while ((line = reader.readLine()) != null) {
                lines.add(line);
            }
            System.out.println(lines);
            String[] str = new String[lines.size()];
 
        }catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //пытаюсь записать количество слов в каждой строке в numbers
        private void str(){
            fileRead();
            for (int i=0;i<lines.size(); i++) {
                String st = lines.get(i);
                int count=0;
                if (st.length() !=0){
                    count++;
                    //Проверяем каждый символ, не пробел ли это
                    for (int it = 0; it < st.length(); it++) {
                        if(st.charAt(it) == ' '){
                            //Если пробел - увеличиваем количество слов на 1
                            count++;
                        }
                    }
                }
                numbers.add(count);
            }
            System.out.println("кол-во"+numbers);
        }
 
        //пытаюсь опредлелить наибольшее число записанное в numbers
        public void max_counter() {
                str();
                int index = 0;
                int max_count = 0;
                for (int i = 0; i < numbers.size(); i++) {
                    max_count = numbers.get(i);
                    if (max_count > numbers.get(i+1)) {
                        max_count = numbers.get(i);
                        index = i;
                    }
                }
            System.out.println(lines.get(index));
    }
    }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.04.2018, 19:14
Лучший ответ Сообщение было отмечено Ananazzz как решение

Решение

Ananazzz, исправил этот метод
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void max_counter() {
        str();
        int index = 0;
        int max_count;
        max_count = numbers.get(0);
        for (int i = 1; i < numbers.size(); i++) {
            if (max_count < numbers.get(i)) {
                max_count = numbers.get(i);
                index = i;
            }
        }
        System.out.println(lines.get(index));
    }
0
0 / 0 / 1
Регистрация: 14.04.2016
Сообщений: 55
14.04.2018, 20:24  [ТС]
iSmokeJC, спасибо большое
0
0 / 0 / 1
Регистрация: 14.04.2016
Сообщений: 55
17.04.2018, 22:37  [ТС]
вопрос еще такой: как модернизировать данный метод так, чтобы он определял слова, даже если между ними несколько пробелов?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private void str(){
            fileRead();
            for (int i=0;i<lines.size(); i++) {
                String st = lines.get(i);
                int count=0;
                if (st.length() !=0){
                    count++;
                    //Проверяем каждый символ, не пробел ли это
                    for (int it = 0; it < st.length(); it++) {
                        if(st.charAt(it) == ' '){
                            //Если пробел - увеличиваем количество слов на 1
                            count++;
                        }
                    }
                }
                numbers.add(count);
            }
            System.out.println("кол-во"+numbers);
        }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.04.2018, 22:41
Ananazzz, подсказка
Java
1
2
3
4
5
String s = "ddasd   asdsd adsd adas   adsa      adsa";
        String[] arr = s.split("\\s+");
        for (String anArr : arr) {
            System.out.println(anArr);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2018, 22:41
Помогаю со студенческими работами здесь

Найти в текстовом файле наибольшее количество цифр, идущих подряд
Найти в текстовом файле наибольшее количество цифр, идущих подряд.

Найти в текстовом файле слово, содержащее наибольшее количество повторяющихся букв
Найти в текстовом файле слово, содержащее наибольшее количество повторяющихся букв

Вывести строку Memo, содержащую наибольшее количество различных слов
Нужна программа которая выводит строку содержащую наибольшее количество различных слов. Напишите ПОЖАЛУЙСТА!)

Найти строку матрицы, в которой самое наибольшее количество отрицательных чисел
Мне нужно при помощи функции в двухмерном массиве найти строку в которой самое наибольшее количество отрицательных чисел

Найти строку, содержащую наибольшее количество слов
Найти строку, содержащую наибольшее количество слов,и вывести ее на экран монитора.Максимальное количество строк - 6.Исходные данные...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru