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.
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.