Wyszukiwanie słów, pętlą while

0

Witam,

mam za zadanie utworzyć program w javie indeksujący pliki tekstowe a następnie wyszukać w nich określonego słowa. Indekser już mam, teraz wyszukiwanie z którym mam problem. Ma ono wyglądać tak, że wpisuje słowo, które chcę znaleźć a potem jako wynik mam numer pliku i numer pozycji na jakiej znajduje się to słowo, np: wpisuje tata -> wynik Plik 2, słowo 123. Potem mogę wyszukiwać oczywiście dalej wpisując nowe słowo albo znak ">" (następne wystąpienie od poprzedniego) lub "<" (wcześniejsze wystąpienie). Mogę również podać numery pliku i pozycji od której słowo ma być szukane np: > tata 2:123 ->wynik: Plik 3, słowo 12334. Przerwanie szukania ma nastąpić w momencie wpisania "!".
I właśnie mam problem z tym "!", bo chciałem zrobić to w pętli while. To czego wyszukuje myślałem, żeby wrzucić do tablicy stringów a potem sprawdzam po kolei elementy. Jak będzie na pierwszym "!" to koniec ale nie wiem jak to zrobić. I w sumie też nie wiem jak zrobić sprawdzanie od którego pliku i pozycji, czyli 2:123. Najbardziej bym prosił o jakiś szkielet kodu albo pseudokod, bo jestem początkujący w javie.

0

Napisz indekser jak czlowiek to problem sam się rozwiąże. Proponuje strukturę Map<String,Map<String,List<Integer>>>
gdzie mapujesz sobie:
szukane słowo -> lista plików w których wystąpiło -> lista numerów pozycji w których wystąpiło
Ewentualnie możesz mapować po prostu słowo na pary (nazwa pliku, pozycja), zalezy jak chcesz z tego korzystać
W ten sposób szukanie w strukturze danego słowa będzie banalnie proste:

Map<String,Map<String,List<Integer>>> dane = pobierzDane();
String szukaneSlowo = wczytajSlowo();
for(Entry<String,List<Integer>> entry : dane.get(szukaneSlowo).entrySet()){
  System.out.println("Plik "+entry.getKey());
  for(Integer numerPozycji : entry.getValue()){
    System.out.println("\tpozycja "+numerPozycji);
  }
}

i voila, cały program
Nie wiem jaki widzisz problem z tym interfejsem i przerywaniem pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1