Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] Metodo boolean di controllo su una matrice

    Colgo l'occasione per salutare tutti gli utenti del forum visto che è il mio primo post.

    Sono alle prime armi con il linguaggio java e mi servirebbe una dritta su un metodo che controlla se in una matrice quadrata ci sono numeri ripetuti. Ho fatto tanti di quei tentativi e ora sembra che questo metodo funzioni ma non vorrei ci fosse qualche falla che non riesco a scoprire:

    codice:
    public boolean controlloRipetuti(){
    		int valore;
    		boolean controllo=false;
    		for(int h=0;h<dim;h++){
    			for(int k=0;k<dim;k++){
    				valore=matrice[h][k]; 
    				for(int x=0;x<dim;x++){
    					for(int y=0;y<dim;y++){
    						if(valore==matrice[x][y]&& k!=h && h!=x)
    						controllo=true;
    					}
    				}
    			}
    		}
    		return controllo;
    	}


    se trova un numero ripetuto torna true. E' corretto?
    Grazie in anticipo dell'aiuto.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [JAVA] Metodo boolean di controllo su una matrice

    Originariamente inviato da Ghiozzo
    se trova un numero ripetuto torna true. E' corretto?
    Perché chiedi a noi se è corretto? Eseguilo e lo vedrai da te se lo è!

    ps: usa il tag CODE per postare il codice o passa la voglia di leggerlo
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: [JAVA] Metodo boolean di controllo su una matrice

    Originariamente inviato da Ghiozzo
    Ho fatto tanti di quei tentativi e ora sembra che questo metodo funzioni ma non vorrei ci fosse qualche falla che non riesco a scoprire:
    ma appunto, io l'ho provato e sembra che vada. Ma ho paura di non fare tutti i test necessari e che magari ci sia qualche errore che non riesco a scoprire.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Metodo boolean di controllo su una matrice

    Originariamente inviato da Ghiozzo
    se trova un numero ripetuto torna true. E' corretto?
    Il concetto sì, l'hai già sicuramente capito: per ogni valore della matrice si riscansiona la matrice per vedere se c'è un duplicato. In pratica 2 scansioni della matrice "annidate". Che alla fine sono appunto 4 for annidati! Comunque non è la tecnica migliore, ce ne sono altre più "furbe" (vedi sotto).

    A parte questo, tecnicamente non è proprio correttissimo al 100%. Fai un test k!=h ma k e h sono colonna/riga di una scansione!! Devi confrontare le righe e le colonne tra le due scansioni. Quindi h/x e k/y (la / non nel senso del diviso ma di coppia!).
    Comunque ti suggerisco di dare alle variabili degli indici dei nomi più sensati ed eloquenti, come r1, c1, r2, c2 ad esempio. Non è che devi per forza usare tutte le lettere dell'alfabeto!

    Una tecnica più furba sarebbe l'uso di una "collezione" (una implementazione di Set, per la precisione). Ogni valore lo inserisci nel Set. Prima verifichi se c'è già. Se esiste ... hai trovato un duplicato. Verrebbe semplice e chiaro e oltretutto scansioni la matrice 1 volta sola.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Proverò anche con il secondo metodo che mi hai suggerito.

    Hai ragione a dire che k!=h non ha senso Non me ne sono accorto. Devo scrivere k!=y giusto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.