Salve a tutti!
Ho un problemino da risolvere:
Calcolare la somma dei contenuti delle righe di una matrice tranne le ultime celle, stampando proprio nelle ultim i risultati delle somme delle celle precedenti.
Vi metto il mio codice e vi indico dove sta l'errore:
Da quello che potete notare, cioè:codice:public class SommaRighe { int matrice[][]; int colonne=5, righe=5; SommaRighe(){ matrice=new int[righe][colonne]; } public void Carica(){ for(int r=0;r<righe;r++){ for(int c=0;c<colonne-1;c++){ matrice[r][c]=(int)(Math.random()*10); } } //stampo la matrice originale for(int r = 0; r<righe; r++){ for(int c = 0; c<colonne; c++){ System.out.print(matrice[r][c]+" "); } System.out.println(); } } public void SommaRighe(){ int somma=0, r = 0, c = 0; for(r=0;r<righe;r++){ for(c=0;c<colonne-1;c++){ somma+=matrice[r][c]; matrice[r][4]=somma; } } //errore for(r=4;r<righe;r--){ for(c=4;c<colonne;c--){ somma=matrice[r][4]-matrice[r-1][4]; matrice[r][4]=somma; } } System.out.println("<<<Righe sommate>>>"); for(r = 0; r<righe; r++){ for(c = 0; c<colonne; c++){ System.out.print(matrice[r][c]+" "); } System.out.println(); } } } public class Main { public static void main(String[] args) { SommaRighe sr = new SommaRighe(); sr.Carica(); sr.SommaRighe(); } }
Cerco di fare la differenza per ottenere il risultato giusto negli elementi della 4 colonna, poichè prima del ciclo vengono in questo modo:codice:for(r=4;r<righe;r--){ for(c=4;c<colonne;c--){ somma=matrice[r][4]-matrice[r-1][4]; matrice[r][4]=somma; }
Cercando di fare 84-59, 59-37 e 37-22 per ottenere la somma giusta.codice:<<<Righe sommate>>> 5 3 2 0 10 4 5 2 1 22 2 8 1 4 37 3 9 4 6 59 8 6 3 8 84
In output mi viene questo se compilo il programma:
Grazie in anticipo a quelli che mi potranno aiutare.codice:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 at sommarighe.SommaRighe.SommaRighe(SommaRighe.java:38) at sommarighe.Main.main(Main.java:9) Java Result: 1
Jan

Rispondi quotando