Ciao a tutti, ho un problema con il return dei metodi sopraDiagonale(M) - sottoDiagonale(M) - Diagonale(M). Il programma deve fare questo:
Definire un metodo che:
* (i) prenda come unico parametro formale, di nome m, una matrice quadrata di interi
* rappresentata PER COLONNA;
* (ii) restituisca true se e solo se tutti gli elementi che NON appartengono alla diagonale
* principale sono uguali a 0 e gli elementi che appartengono alla diagonale sono multipli di 3.
Ho fatto 3 metodi, ognuno per controllare rispettivamente se:
*gli elementi che appartengono alla diagonale sono multipli di 3
*tutti gli elementi che NON appartengono alla diagonale principale sono uguali a 0
Prendo come riferimento il metodo Diagonale; tramite la stampa a video ho controllato che faccia quello che deve e a quanto pare..lo fa...Il problema credo sia dovuto al fatto che l'ultimo elemento che trova è true quindi ritorna "true" nonostante la diagonale non sia tutta multipla.
Come posso fare a farlo uscire dal ciclo al primo false che incontra e quindi farmi ritornare false?(credo che il problema è uguale su tutti i metodi)
public class BZero{
public static boolean multiplo(int v,int a){
return v%a==0;
}
//ELEMENTI SOPRA LA DIAGONALE
public static boolean sopraDiagonale(int[][]m){
boolean vero=false;
int indiceColonne=1;
for(int i=0;i<m.length-1;i++){
for(int j=indiceColonne;j<m[i].length;j++){
if(m[i][j]==0)
vero=true;
}
indiceColonne++;
}
return vero;
}
//ELEMENTI SOTTO LA DIAGONALE
public static boolean sottoDiagonale(int[][]m){
boolean vero=false;
for(int i=1;i<m.length;i++){
for(int j=0;j<i;j++){
if(m[i][j]==0)
vero=true;
}
}
return vero;
}
//ELEMENTI DELLA DIAGONALE
public static boolean Diagonale(int[][]m){
boolean vero=false;
for(int i=0;i<m.length;i++){
for(int j=0;j<m[i].length;j++){
if(i==j){
vero=multiplo(m[i][j],3);
System.out.print(" "+ m[i][j]);
System.out.println(" "+"DIAGONALE: "+vero);
}
}
}
return vero;
}
public static void main(String[] args){
int[][] M = {{1,0,0,0}, {0,3,0,9}, {0,0,5,0}, {0,0,0,9}};
if(sopraDiagonale(M) && sottoDiagonale(M) && Diagonale(M))
System.out.println(true);
else
System.out.println(false);
}
}