public class MetodiMatrici /* Ecco la soluzione completa. E' opportuno osservarla solo dopo aver cercato * autonomamente di risolvere il problema */ { public static int cercaRigaMassima(double[][] m) { // L'inizializzazione seguente usa il minimo valore possibile per un int // osservare, nella documentazione della classe Integer, i "FIELDS" // come nel caso dei metodi static, anche i campi (field) static devono // essere preceduti dal nome della classe. // Una alternativa possibile e' invece sommare fuori dal ciclo esterno la riga // di posto 0 e inizializzare sommaMassima con tale somma double sommaMassima = Double.MIN_VALUE; int posizioneMassimo = 0; for (int i = 0; i < m.length; i++) { double sommaCorrente =0; for (int j = 0; j < m[i].length; j++) { sommaCorrente = sommaCorrente+m[i][j]; } if (sommaCorrente>sommaMassima) { sommaMassima = sommaCorrente; posizioneMassimo = i; } } return posizioneMassimo; } public static boolean eQuadrata(double[][] m) { /* ASSUMENDO CHE TUTTE LE RIGHE ABBIANO LA STESSA LUNGHEZZA SI POTREBBE SEMPLICEMENTE ESEGUIRE UN SOLO CONFRONTO TRA IL NUMERO DI RIGHE E LA LUNGHEZZA DELLA RIGA DI POSTO ZERO if (m.length == m[0].length) return true; else return false; POICHE' LE RIGHE DI UN ARRAY BIDIMENSIONALE POTREBBERO AVERE LUNGHEZZE DIVERSE, IL METODO CONTROLLA ESPLICITAMENTE CHE CIASCUNA RIGA ABBIA LUNGHEZZA UGUALE AL NUMERO DI RIGHE */ int nRighe = m.length; for (int i = 0; i < nRighe; i++) { if (m[i].length != nRighe) { return false; } } return true; } public static double cercaMaxDiag(double[][] m) { double massimo = m[0][0]; for (int i = 1; i < m.length; i++) { if (m[i][i] > massimo) { massimo = m[i][i]; } } return massimo; } }