Witam,
mam taki problem, na zadanie mam do napisania
Słownik podpowiedzi analogiczny do słownika T9
Celem zadania jest stworzenie programu realizującego słownik podpowiedzi analogiczny do słownika T9 używanego w wielu telefonach komórkowych przy pisaniu sms-ów.
Na klawiaturze typowego telefonu cyfrom 2-9 odpowiadają następujące litery:
Użytkownik wprowadza kolejne cyfry, a program przegląda wbudowany słownik (bazę wyrazów) w poszukiwaniu wyrazu odpowiadającego ciągowi wprowadzonych cyfr.
Przykład:
Użytkownik wprowadził: 568.
Program podpowie: kot, lot ( o ile te wyrazy są w bazie wyrazów)
Przykładowe rozwiązanie:
• Stworzenie listy elementów (kod cyfrowy słowa, słowo)
• Posortowanie listy według kodów cyfrowych słów
• Wyszukiwanie binarne tak uporządkowanej listy
Istnieją efektywniejsze rozwiązania tego zadania.
Wybrałem 1 wersje czyli stworzenie listy elementów (kod cyfrowy słowa, słowo)
import java.util.* ;
import java.io.* ;
abstract class t99 implements Comparable<t99>{
String slowo;
String cyfra;
}
public class t9{
public static void main(String[] args) throws IOException{
menu();
}
public static void menu() throws IOException{
Scanner opcja=new Scanner(System.in);
System.out.printf("Menu:\n 1.Tlumacz\n 2.Dodaj do slownika \n 3.Wyswietl zawartosc slownika\n 4.Koniec\n");
int i=opcja.nextInt();
switch(i){
case 1: tlumacz() ; break ;
case 2: dodaj() ; break ;
case 3: wyswietl(); break;
case 4: break ;
default: System.out.printf("Nic nie wybrales!\n\n") ;
}
}
public static void tlumacz() throws IOException{
FileReader fr=new FileReader("slownik.txt") ;
Scanner linia=new Scanner(fr) ;
Scanner slowo=new Scanner(System.in) ;
LinkedList<t99> pol=new LinkedList<t99>() ;
LinkedList<String> ang=new LinkedList<String>() ;
String s=new String() ;
int l=0;
while(linia.hasNextLine()){
s=linia.nextLine() ;
String[] polang=s.split(" ") ;
pol.addLast(polang[0]) ;
ang.addLast(polang[1]) ;
l++ ;
}
System.out.printf("Podaj wyraz: \n") ;
s=slowo.nextLine() ;
if(pol.indexOf(s)!=-1) System.out.printf("Tlumaczenie: "+s+" - "+ang.get(pol.indexOf(s))+"\n") ;
if(ang.indexOf(s)!=-1)System.out.println("Tlumaczenie: "+s+" - "+pol.get(ang.indexOf(s))+"\n") ;
if((ang.indexOf(s)==-1)&&(pol.indexOf(s)==-1))System.out.printf("Nie ma takiego slowa w slowniku!\n") ;
System.out.printf("\n");
menu();
}
public static void dodaj() throws IOException{
FileWriter fw=new FileWriter("slownik.txt",true) ;
String s=new String() ;
Scanner slowo=new Scanner(System.in) ;
System.out.printf("Slowo i Tlumaczenie: 'pol ang' \n") ;
s=slowo.nextLine() ;
fw.write(s+"\n") ;
fw.close() ;
System.out.printf("\n") ;
menu();
}
public static void wyswietl() throws IOException{
FileReader fr=new FileReader("slownik.txt") ;
Scanner linia=new Scanner(fr) ;
while(linia.hasNextLine()){
System.out.println(linia.nextLine());
}
menu();
}
}
Chciałbym zapytać czy dobrze zrozumiałem zadanie i dlaczego nie działa on prawidłowo. Moj program dziala tak ze z pliku slownik.txt wczytuje sobie do listy slowa i ich odpowiedniki w cyfrach a nastepnie wyswietla je na ekranie w postaci "Tlumaczenie: 6262 - mama"