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

Поиск позиции слова в текстовом файле

28.02.2016, 13:29. Показов 3585. Ответов 7

Студворк — интернет-сервис помощи студентам
Первый раз на форуме, не сильный специалист в Java, всю голову сломал.
Есть программа, которая делает поиск слова в файле и выдаёт его позицию ([i] строка, [j] номер слова),
нужно вывести слово следующее за найденным, то есть [j+1],
есть ли в Java функция которая переходит на следующее слово или нужно идти другим методом?

p.s.
В дальнейшем планируется поиск в нескольких файлах, лежащих в одной директории

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
public class pussy {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        String searchWord = "class"; 
        FileInputStream fis = new FileInputStream(new File("res//1.java")); 
        byte[] content = new byte[fis.available()];
        fis.read(content);
        
        fis.close();
        String[] lines = new String(content, "UTF-8").split("\n"); 
        int i = 1;
        int k = 0;
        for (String line : lines) {
            String[] words = line.split(" ");
            int j = 1;
            for (String word : words) {
                if (word.equalsIgnoreCase(searchWord)) {
                    System.out.println("слово " +word + " Найдено в " + i + "-й строке, " + j + "-е слово");
                                    
                    k = k+1 ;
                }
                 j++;
            }
            i++;
        }
        if (k<1){
       JOptionPane.showMessageDialog(null, "слово " +searchWord +" не найдено");  
        }
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2016, 13:29
Ответы с готовыми решениями:

Поиск слова в текстовом файле
Разработать программу, которая читает текстовый файл и некоторое слово и выводит те строки файла, которые содержат данное слово. Имя...

Поиск слова в текстовом файле
В оперативной памяти имеется таблица слов(строковый массив) длиной N, N &gt; 10. Из текстового файла поочереди считываются слова в количестве,...

Поиск слова в текстовом файле
Написать программу реализующую поиск слова в массиве. Создать событие, при котором при нажатии кнопки «Поиск» происходит поиск слова в...

7
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
28.02.2016, 15:01
Лучший ответ Сообщение было отмечено vazilin77 как решение

Решение

vazilin77, не проверяя всего остального кода, попробуйте сделать вот так:
Java
1
2
3
4
5
6
7
            for (String word : words) {
                if (word.equalsIgnoreCase(searchWord)) {
                    System.out.println("слово " + word + " Найдено в " + i + "-й строке, " + j + "-е слово");
                    System.out.println("Следующее слово в строке " + words[j + 1]);
                    k = k + 1;
                }
                j++;
1
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 8
29.02.2016, 00:33  [ТС]
Огромное спасибо, НОВАТОР, только небольшой нюанс
System.out.println("Следующее слово в строке " + words[j]);
если j+1 он выводит слово через найденное...
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
29.02.2016, 01:30
vazilin77, по всей вероятности это из-за того, что
Java
1
2
3
String[] words = line.split(" ");
            int j = 1;
            for (String word : words)
j должно начинаться с нуля. То есть:
Java
1
2
3
String[] words = line.split(" ");
            int j = 0;
            for (String word : words)
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
29.02.2016, 14:48
Еще есть нюанс, если будете искать в "людских" текстах, то перед
Цитата Сообщение от vazilin77 Посмотреть сообщение
String[] lines = new String(content, "UTF-8").split("\n");
нужно убрать знаки препинания, скобки и тире, относятся к ним
1
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 8
01.03.2016, 01:56  [ТС]
снова настигли неприятности, требуется найденное слово найти в другом файле, а точнее в нескольких лежащих в одной директории, почему в цикле по второму файлу всегда выводится, что слово в 1-й строчке 1-е по счету?
и как организовать цикл поиска найденного слова(слов) по нескольким файлам?
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
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
 
import javax.swing.JOptionPane;
 
public class pussy {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        String searchWord = "class"; 
        FileInputStream fis = new FileInputStream(new File("res//1.java")); 
        byte[] content = new byte[fis.available()];
        fis.read(content);       
        fis.close();
        
        System.out.println("В каталоге находятся файлы:");
        File dir = new File("C://eclipse/eclipse/workspace/Booobs/res");{            
            for(File item : dir.listFiles()){              
                 if(item.isFile()){                                                                     
                   System.out.println(item.getName() + "\tфайл"); 
                 }
             }     
        }
        
        System.out.println();
        String[] lines = new String(content, "UTF-8").split("\n"); 
        int i = 1;
        int k = 0;
        for (String line : lines) {
            String[] words = line.split(" ");
            int j = 1;
            for (String word : words) {
                if (word.equalsIgnoreCase(searchWord)) {
                    String clasname = words[j];
                    System.out.println("Следующее слово в строке " + clasname);  
                    System.out.println("слово " +  clasname + " Найдено в " + i + "-й строке, " + j + "-е слово");
                    k = k+1 ;                    
                      
        FileInputStream sec = new FileInputStream(new File("res//2.java"));
        byte[] content2 = new byte[sec.available()];
        sec.read(content2);
        sec.close();
        int ii = 1;
        
        String[] lines2 = new String(content2, "UTF-8").split("\n");  
           for (String line2 : lines2){
                 String[]words2 = line2.split(" ");
                 int jj = 1;
                        for (String word2 : words2){                                                
                            if (word2.equals(clasname)){
                                System.out.println("слово "+clasname+" во втором файле находится в " + ii + "-й строке,  "+jj+"-е слово\n");
                            }
                        }
                         jj++;
                    }
                    ii++;                                                                                                 
                }
                 j++;
            }
            i++;
        }
        if (k<1){
       JOptionPane.showMessageDialog(null, "слово " +searchWord +" не найдено");  
        }        
    }
}
Миниатюры
Поиск позиции слова в текстовом файле  
0
 Аватар для Aviz__
2740 / 2049 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
01.03.2016, 13:32
Лучший ответ Сообщение было отмечено vazilin77 как решение

Решение

Так все работает, как нужно.
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
package cyberforum;
 
import java.io.*;
 
public class CyberForum {
    private static File dirWhisFiles = new File("c:\\Users\\Projects\\CyberForum\");
    private static byte[] fileContent;
 
    private static void setFileContent(File targetFiles) throws IOException {
        FileInputStream openFile = new FileInputStream(targetFiles);
        fileContent = new byte[openFile.available()];
        openFile.read(fileContent);
        openFile.close();
        System.out.println("В файле " + targetFiles.getName().toString());
        searchInContent("aaa");
    }
 
    private static void searchInContent(String searchWord) throws UnsupportedEncodingException {
        String stringContent = new String(fileContent, "UTF-8");
 
        int numberLine = 0;
        for (String targetLine: stringContent.split("\n")) {
            String [] wordsInLine = targetLine.split(" ");
            for (int i = 0; i < wordsInLine.length; i++) {
                if (searchWord.equalsIgnoreCase(wordsInLine[i]))
                    System.out.println(searchWord + " найдено в строке " + (numberLine + 1) + ", " + (i+1) + " по счету слово");
            }
            numberLine++;
        }
    }
 
    public static void main(String[] args) throws IOException {
        for (File itemFiles: dirWhisFiles.listFiles()) {
            if (itemFiles.isFile())
                setFileContent(itemFiles);
        }
    }
}
1
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 8
01.03.2016, 13:40  [ТС]
большое спасибо Aviz , теперь мне остается разобраться с коде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2016, 13:40
Помогаю со студенческими работами здесь

Поиск слова в текстовом файле
Коллеги, нужна помощь ваша. Я новичок и бьюсь уже 2-й день, ужас какой-то. С BAT\CMD сталкиваюсь не впервой, но как сделать следующее...

Поиск слова в текстовом файле
Доброе время суток. Есть текстовый файл (текстовый файл находится рядом с exe файлом)в котором много слов и цифр например: drop=0 ...

Поиск слова в текстовом файле
Почему программа вылетает ? Когда пробую на линуксе, там вообще дамп памяти. Необходимо найти слово в файле, и вывести их количество,...

Поиск слова в текстовом файле
Почему программа вылетает ? Когда пробую на линуксе, там вообще дамп памяти. Необходимо найти слово в файле, и вывести их количество,...

Поиск слова в текстовом файле
Нужно создать программу по поиску слова в текстовом файле. Есть вот-такой вот код: #define _CRT_SECURE_NO_WARNINGS #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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 31.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