Semplice metodo con array

di il
2 risposte

Semplice metodo con array

Ciao a tutti,
vorrei fare un metodo che da due parametri espliciti costituiti da 2 array mi ritorni un array uguale all'array tra i parametri espliciti più "lungo", ossia più capiente.
Ho ragionato così:
Faccio finta che il secondo array (parametro esplicito b) sia più lungo/capiente di a, quindi scrivo "return b". se per caso è più lungo a (istruzione if), cambio i riferimenti (vedi corpo dell'if).

public static int [] arrayMax(int[]a, int[]b){
		if (a.length>b.length){
			a=b;
			b=a;
		}
		return b;
	}
Tuttavia quando provo a testarlo accade questo:

esempio:
input (parametri espliciti)
a--> 1 2 3 4
b--> 1 2

output
1 2

L'if non avrebbe dovuto assegnare a b le celle di memoria contenenti i valori 1 2 3 4 e quindi avere come output proprio 1 2 3 4?

Grazie

2 Risposte

  • Re: Semplice metodo con array

    Ciao, il corpo dell ' if non fa quello che dovrebbe; assegni ad a il reference di b (a e b si riferiscono entrambi a b) e subito dopo riassegni a b il reference di a , il quale ora si si riferisce a b (a e b si riferiscono entrambi ancora a b); quindi restituisci sempre b.
    Se il tuo intento era scambiare a e b (non ho capito il motivo) allora devi usare una variabile di supporto:
    
    public static int [] arrayMax(int[]a, int[]b){
          if (a.length>b.length){
                int [] temp = null;
                temp = a;
                a = b;
                b = temp;
          }
          return b;
    }
    
    oppure più semplicemente:
    
    public static int [] arrayMax(int[]a, int[]b){
          if (a.length>b.length){
                return a;
          }
          return b;
    }
    
  • Re: Semplice metodo con array

    Afferrato, grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte