PDA

View Full Version : INDICI


Lo_Straniero2003i
16-06-2006, 14:42
Salve, mi trovo d'avanti ad un problema e avrei bisogno del vostro aiuto.
Ho un problema che mi chiede di ricercare in un array di array di strighe una parola, anch'essa stringa (String s in questo caso) e di restituire l'indice di colonna della matrice dove la parola che metto come parametro si presenta più spesso e infine applicare l'indice all'array di array per visualizzare la la colonna. Es:
ciao ciao
xxxx ciao.
Mi stampa a video poi:
L'indice di colonna dove la parola di presenta più spesso e' 1 con i seguenti elementi:
ciao
ciao.
Fondamentalmente questo non è un problema. Infatti:
public static int maxOccorrenze(String [][] mat, String s) {
int ris, max, contatore, comodo;
comodo = 0;
max = 0;
ris = 0;
int cont[];
cont = new int[mat[0].length];
for(int i=0; i<mat.length; i++) {
for(int j=0; j<mat[0].length; j++) {
if(mat[i][j].equals(s) && mat[i][j].length()==s.length()) {
cont[j] = i;
System.out.println(cont[j]);
}

max = cont[0];
for(int u = 0; u<cont.length; u++) {
if(max<cont[u])
ris = max;
else
ris = cont[u];
}
}
}

return ris;
}

cioè con questo metodo di classe io sostanzialmente conto quanta volte un indice si ripete e l'indice che si ripete più volte è 'ris'. Poi per stampare a video:
public static void stampaColonna(String[][] mat, int j) {
System.out.print(j + " che ha i seguenti elementi: ");
for(int i=0; i<mat.length; i++)
for(int r=0; r<mat[0].length; r++)
if(i==j)
System.out.println(mat[i][r]);
E' da intendersi che ris e j sono la stessa cosa. Ma adesso le cose si complicano, ed è qui il mio problema. Perchè se ci sono colonne che hanno un numero di elementi uguali io devo stampare a video la colonna che ha indice minore. Per Es:
ciao ciao ciao ciao
xxx ciao ciao ciao
vvv ciao ttt ciao

E quindi ne metodo precedente j(o ris) = 1. Come posso far per risolvere questo problema?

Spero di essere stato chiaro. Saluti.

Lo_Straniero2003i
18-06-2006, 16:28
Qualcuno mi aiuta?