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:
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();
    }

}
Da quello che potete notare, cioè:
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;
            }
Cerco di fare la differenza per ottenere il risultato giusto negli elementi della 4 colonna, poichè prima del ciclo vengono in questo modo:
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
Cercando di fare 84-59, 59-37 e 37-22 per ottenere la somma giusta.

In output mi viene questo se compilo il programma:
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
Grazie in anticipo a quelli che mi potranno aiutare.
Jan