Pages: [1]   Go Down
Print
Author Topic: matrice problema  (Read 1135 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« on: 01-09-2010, 14:56:50 »

scusate avrei un problema: devo verificare se in una colonna di una matrice FRASTAGLIATA di stringhe ne esistano 3 che terminano con lo stesso carattere finale. Io ho abbozzato qualcosa del genere però esce fuori dal range:

Code:
public static boolean metodo(String[][]A){
int cont=0;
for(int i=0; i<A.length; i++){
for(int j=0; j<A[i].length; j++){
cont=0;
for(int k=0; k<A.length; k++){

if(A[i][j].charAt(A[i][j].length()-1) == A[i][k].charAt(A[i][k].length()-1))
cont++;
if(cont==3)
         return true;
}
}
}
         
return false;
};
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 01-09-2010, 18:05:28 »

Il tuo metodo verifica la condizione SULLE RIGHE e non sulle colonne.
Ti ricordo che il primo indice di un array indica la riga e il secondo la colonna.

Il problema del sollevamento dell'eccezione ArrayIndexOutOfBounds è veramente secondario in questo codice e non ha senso tentare di risolverlo se prima non si risolve quello che ti ho specificato all'inizio del messaggio.

Ciao .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #2 on: 01-09-2010, 22:16:25 »

Grazie reversengineer credo di avere risolto in parte il problema.. ora dovrebbe soltanto esserci l' errore dell' eccezione! Ho provato con l' if ma nn capisco dove sbaglio!Qualche consiglio?!

Code:
public static boolean metodo(String[][]A){
int cont=0;
for(int j=0; j<A[0].length; j++){
for(int i=0; i<A.length; i++){
cont=0;
if(i<A[j].length)
                                   
for(int k=0; k<A[i].length; k++){

if(A[i][j].charAt(A[i][j].length()-1) == A[i][k].charAt(A[i][k].length()-1))
cont++;
if(cont==3)
         return true;
}
}
}
         
return false;
}
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #3 on: 02-09-2010, 12:34:41 »

In questa condizione:
Code:
if(i<A[j].length)
gli indici i e j andrebbero scambiati, così:
Code:
if(j<A[i].length)
ma questo non risolverebbe ancora il problema del frastagliamento dell'array bidimensionale.

In questi casi, la cosa migliore da fare, è capire qual è il massimo indice di "colonna" a cui fermare "j" del tuo primo ciclo for. Questo massimo può essere trovato con una lettura di tutte le length di ciascuna riga con un banale ciclo for o while.

Dopodiché si usa un codice simile al tuo, in cui però la condizione che ho citato a inizio messaggio va fatta dentro al ciclo che itera su "k" invece che fuori da esso.

Buona giornata .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #4 on: 02-09-2010, 13:50:21 »

mmm.. cmq un altra cosa che mi viene in mente potrebbe essere anche per il fatto che sto cercando di accedere a una locazione della matrice che non eiste... Perchè io la parte del main l' ho fatta così:

Code:
public static void main(String[]args){
String [][]A={{"casa", "sole"},
                   {"mare"},
                    {"msi" , "notebook", "series"},
    {"eserciziO", "numero2"}};
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #5 on: 03-09-2010, 14:28:30 »

mmm.. cmq un altra cosa che mi viene in mente potrebbe essere anche per il fatto che sto cercando di accedere a una locazione della matrice che non eiste... Perchè io la parte del main l' ho fatta così:

Code:
public static void main(String[]args){
String [][]A={{"casa", "sole"},
                   {"mare"},
                    {"msi" , "notebook", "series"},
    {"eserciziO", "numero2"}};
L'array che passi è perfettamente valido. Il frastagliamento delle sue righe è previsto dall'esercizio.

Hai provato a implementare la ricerca della lunghezza massima fra le lunghezze di tutte le righe?

Ciao.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #6 on: 03-09-2010, 14:32:10 »

sisi qll che ho fatto fin ora è così:

Code:
public static boolean metodo(String[][]A){
int cont=0;
int max=0;
for(int x=0; x<A.length; x++){
if(A.length>max)
max=A.length;
}
System.out.println(max);      //colonna massima
for(int j=0; j<max; j++){
for(int i=0; i<A.length; i++){
cont=0;

if(A[i][j] == null) {
A[i][j]=null;
//System.out.println("vuolo");

}
else {
System.out.println(A[i][j].charAt(A[i][j].length()-1));
}

for(int k=0; k<A[i].length-1; k++){

// System.out.println(A[i][k].charAt(A[i][k].length()-1));
if(j<A[i].length) 


if(A[i][j].charAt(A[i][j].length()-1) == A[i][k].charAt(A[i][k].length()-1))
cont++;
if(cont==3)
         return true;
     
}
}
}
return false;
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Pages: [1]   Go Up
Print
Jump to: