Avatar billede s_friis Nybegynder
18. marts 2004 - 09:45 Der er 3 kommentarer og
1 løsning

Liste over prefix et givent ciffersekvens giver

Jeg er i forbindelse med et kursus ved at lave en orborg til en sms telefon.
Jeg har opbygget ordbogen og lavet en metode der tjeker om et givent prefix eksistere deri.
Nu vil jeg lave en metode der returnerer en liste over prefix et givent tasteryk giver anledning til.
Eksempelvis vil cifferSekvensen 585 returnere listen: jtj,jtk,jtl,juj,juk,........
Denne liste vil jeg så gennemløbe for at tjekke om hvert enkelt prefix forkommer i ordbogen.
Men hvordan jeg danner denne liste kan jeg ikke gennemskue.
Jeg går ud fra at jeg skal bruge denne:
private final String[] ALFB = {"æøå","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
som repræsentant for hvilke bogstaver der hører til hvilken tast.
Specifikationen på metoden må vel se således ud:
    // pre:  -
    // post: prefixList = listen af prefix som
    //      ciffersekvensen digits kan give anledning til
    List prefixList(String digits) {
      ...
    }
Er der en der kan give mig et hint, så jeg kan komme videre
Avatar billede jakoba Nybegynder
18. marts 2004 - 13:30 #1
fx:

String[] tastatur = { " ",  "",    "abc",  "def", "ghi",
                      "jkl", "mno", "pqrs", "tyv", "Wxyz" };

ArrayList a = new ArrayList();

void buildList( String cifre, ArrayList a, String str ) {
    if ( cifre.length() == 0 ) {
        a.add( str );
    } else {
        String tmp = tastatur[Integer.parseInt(cifre.charAt(0))];
        for (int i=0; i<tmp.length(); i++ ) {
            buildList( cifre.substring(1), a, str += tmp.charAt(i) );
        }
    }
}//endmethod buildlist

Du ma selv checke om det virkelig er cifre og om evt et af de cifre er et '1', det ville give fejl.

mvh JakobA
Avatar billede s_friis Nybegynder
18. marts 2004 - 18:16 #2
Tak jakoba - men det virker ikke helt som det skal.

jeg har udskiftet:
String tmp = tastatur[Integer.parseInt(cifre.charAt(0))];
med:
String tmp = tastatur[Integer.parseInt(Character.toString(cifre.charAt(0)))];

men ved tastetryk 5 for jeg listen j,jk,jkl - i stedet for j,k,l
ved tastetryk 585 for jeg tilsvarende en liste med 27 elementer: jtj,jtjk,jtjkl,.....
i stedet for jtj,jtk,jtl.....
antal elementer er god nok, nemlig 3*3*3

sf
Avatar billede jakoba Nybegynder
18. marts 2004 - 18:36 #3
min dummert, jeg brugte  +=  hvor der kun skulle have stået  +  (+= ændrer værdien i str)
            buildList( cifre.substring(1), a, str + tmp.charAt(i) );
Avatar billede s_friis Nybegynder
18. marts 2004 - 18:55 #4
ja - så kører det
rekursion kunne jeg godt tænke mig at få bedre ind under huden

jeg takker mange gange - jakoba , du må være guld værd for dine omgivelser

sf
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester