Errore metodo

di il
4 risposte

Errore metodo

Buonasera. Ho un dubbio in merito il seguente metodo:
public String[] cittaPiuDistanti (){
		String [] fi = new String [2];
		int max = 0;
		for(int i = 0; i<this.citta.length; i++){
			for(int j = 0; j<this.citta.length; j++){
				if(this.distanze[i][j]>max)
					max=this.distanze[i][j];
					fi[0]=this.citta[i];
					fi[1]=this.citta[j];				
					}
				}
			}
		return fi;
		}
Il fine è quello di visualizzare un array di dimensione due contenente il nome delle città più distanti. Ho pensato di individuarle con il valore max, e dei cicli for, in modo da andare a scandire i valori di tutte le distanze inserite in una matrice bidimensionale di interi. Suggerimenti su come risolverlo in meglio?

4 Risposte

  • Re: Errore metodo

    alamo ha scritto:


    Suggerimenti su come risolverlo in meglio?
    Se citta è un array di N elementi e distanze è una matrice di esattamente NxN elementi (con la diagonale a 0 come è ovvio essendo stessa città), allora il codice funzionalmente mi pare CORRETTO.

    Invece che un array si potrebbe usare una classe che rappresenta una "coppia" di valori (magari una classe generica, riusabile anche per altro).
    Poi personalmente tendo a NON esplicitare il this se non c'è uno scenario di shadowing.

    Ma per il resto ... cosa c'è che non ti piace?
  • Re: Errore metodo

    andbin ha scritto:


    alamo ha scritto:


    Suggerimenti su come risolverlo in meglio?
    Se citta è un array di N elementi e distanze è una matrice di esattamente NxN elementi (con la diagonale a 0 come è ovvio essendo stessa città), allora il codice funzionalmente mi pare CORRETTO.

    Invece che un array si potrebbe usare una classe che rappresenta una "coppia" di valori (magari una classe generica, riusabile anche per altro).
    Poi personalmente tendo a NON esplicitare il this se non c'è uno scenario di shadowing.

    Ma per il resto ... cosa c'è che non ti piace?
    Durante l'esecuzione del programma mi compare un codice che mostra tutt'altro.


    EDIT:

    Questo è ciò che visualizza
    [Ljava.lang.String;@614ca7df
  • Re: Errore metodo

    alamo ha scritto:


    Questo è ciò che visualizza
    [Ljava.lang.String;@614ca7df
    Ma è perché stai "stampando" direttamente l'array. Gli array hanno un toString() che purtroppo NON è significativo, perché non è stato ridefinito e rimane quindi quello "ereditato" da java.lang.Object che sa solo dare quella forma.

    O usi metodi di utilità es. il Arrays.toString() (Arrays è java.util.Arrays) o stampi tu i singoli elementi.

    Comunque se vuoi "ottimizzare" il metodo puoi escludere la diagonale (banale) oppure addirittura escludere metà matrice. Perché se ci pensi (e se la matrice è coerente), hai due triangoli con gli stessi dati, quindi basta prendere un solo triangolo di dati.
  • Re: Errore metodo

    andbin ha scritto:


    alamo ha scritto:


    Questo è ciò che visualizza
    [Ljava.lang.String;@614ca7df
    Ma è perché stai "stampando" direttamente l'array. Gli array hanno un toString() che purtroppo NON è significativo, perché non è stato ridefinito e rimane quindi quello "ereditato" da java.lang.Object che sa solo dare quella forma.

    O usi metodi di utilità es. il Arrays.toString() (Arrays è java.util.Arrays) o stampi tu i singoli elementi.

    Comunque se vuoi "ottimizzare" il metodo puoi escludere la diagonale (banale) oppure addirittura escludere metà matrice. Perché se ci pensi (e se la matrice è coerente), hai due triangoli con gli stessi dati, quindi basta prendere un solo triangolo di dati.
    Chiarissimo! Sempre disponibile e preparato! Grazie per aver risolto i miei dubbi anche questa volta!
Devi accedere o registrarti per scrivere nel forum
4 risposte