ciao a tutti,potreste darmi una mano?? sono alle prese con questo esercizio:
scrivere un metodo duplicati che riceve una matrice di interi M e restituisce true se M presenta almeno una riga i cui elementi compaiono esattamente 2 volte,false altrimenti.
il codice che ho fatto io è il seguente
public static boolean Duplicati (int [][]M){ boolean riga_trovata=false;
for(int i=0;i<M.length;i++){
boolean trovato=true;
for(int j=0;j<M[0].length;j++){
if(ElementiUguali(M[i][j],i,M)!=2&&!riga_trovata){
trovato=false;
break;
}
if(trovato){
riga_trovata=true;
}
}
}
return riga_trovata;
}
public static int ElementiUguali(int x,int indice,int [][]M){
int conta=0;
for(int j=0;j<M[0].length;j++){
if(M[indice][j]==x){
if(j!=indice){
conta++;
}}}
return conta;
}
public static void main(String []args){
int [][]M={{13,7,-3,22,8,2},{3,17,17,21,3,21},{3,17,3,51,4,1},{8,21,-3,22,16,22},{2,0,0,6,2,6},{2,0,9,6,8,8}};
boolean c=Duplicati(M);
System.out.print(c);
}
}
La matrice inserita è un esempio del testo. il metodo restituisce true in quanto ci sono 2 righe che presentano elementi duplicati. facendo una prova e cioè eliminando entrambe le righe,il risultato viene ugualmente true e dovrebbe venire false xke non c'è nessuna riga che contiene duplicati. il risultato dovrebbe venire false anche se nella riga x esempio c'è anche un solo elemento che non ha il duplicato . cosa sbaglio???