PDA

View Full Version : Aiuto java


bomber_pos
04-09-2006, 18:43
ho un problema... ora vi espongo...
ho un inserimenti di n numeri... che vanno da 2 a 9...
e una tabella di riferimento del T9 fatta così:
2 abc
3 def
4 ghi
5 jkl
6 mno
7 pqrs
8 tuv
9 xywz

dat l'inserimento iniziale di numeri devo salvare in un arraylist tutte le possobili "parole" (per parole si intendono anche sequenze di lettere non di senso compiuto).
Io sono giorni e giorni che :muro: ma NON HO ANCORA TROVATO LA SOLUZIONE... VI PREGO QUALCUNO MI AIUTI... :help: :doh:

Andrea16v
04-09-2006, 19:18
La prima cosa che mi viene in mente, forse banale e poco efficiente, è usare dei cicli for annidati che scorrano gli array di lettere, dove per array di lettere intendo:

String[] array2 = {"a", "b", "c"};
String[] array3 = {"d", "e", "f"};

a seconda dei numeri in input scegli il primo array e i successivi e mediante il for copi una posizione alla volta per comporre una stringa nelll'arrayList di destinazione, altrimenti si puo' fare anche usando usando le sottostringhe, il concetto è simile..

cionci
04-09-2006, 19:22
Visto che le "righe" sono poche possiamo fare una soluzione ricorsiva...

Ad occhio una cosa del genere dovrebbe andare:

void calcolaParole(ArrayList<integer> numeri, Map<Integer, String> vocabolario, ArrayList<String> parole)
{
static StringBuffer buffer = new StringBuffer();
static int livello = 0;

String corrente = vocabolario.get(numeri.get(livello));
for(int i = 0; i < corrente.length(); ++i)
{
buffer.insert(livello, corrente.charAt(i));

if(livello == numeri.size() - 1)
{
parole.add(buffer.toString());
}
else
{
calcolaParole(numeri, vocabolario, parole, livello + 1);
}
}
}

Non l'ho provato...ad occhio funziona...

cionci
07-09-2006, 16:33
Ti è servito ?