Metodi con più risultati

Se il sottoprogramma produce più risultati è possibile restituirli al metodo chiamante in diversi modi.

Un array tra i parametri

Nell’elenco dei parametri compare un array, sul quale si può scrivere…

Esempio

...
double vettore[];
vettore=new double[100];
random(vettore);
...
public static void random(double v[])
{
   for(int i=0; i < v.length; i++)
      v[i]=Math.random();
}

Array come risultato

Se le risposte sono tutte dello stesso tipo si possono impacchettare in un array

Esempio

...
double vettore[];
vettore=random(100);
...
double mmm[];
mmm=MinMedMax(vettore);
...
public static double[] random(int n)
{
   double v[]=new double[n];
   for(int i=0; i < n; i++)
      v[i]=Math.random();
   return v;
}
public static double[] MinMedMax(double v[])
{
   double risp   =new double[3];double minimo=v[0];
   double totale =v[0];
   double massimo=v[0];
   for(int i=1; i < v.length; i++)
   {
      minimo =Math.min(minimo , v[i]);
      totale+=v[i];
      massimo=Math.max(massimo, v[i]);
   }
   risp[0]=minimo;
   risp[1]=totale/v.length;
   risp[2]=massimo;
   return risp;
}

Più metodi

Si divide il metodo in più metodi.
Ciascuno di questi restituisce uno dei risultati richiesti

Esempio

...
double vettore[];
...
double mi=minimo(vettore);
double me=media(vettore);
double ma=massimo(vettore);
...
public static double minimo(double v[])
{
   double risp=v[0];
   for(int i=1; i < v.length; i++)
      risp=Math.min(risp, v[i]);
   return risp;
}
public static double media(double v[])
{
   double totale=0.0;
   for(int i=0; i < v.length; i++)
      totale+=v[i];
   return totale/v.length;
}
public static double massimo(double v[])
{
   double risp=v[0];
   for(int i=1; i < v.length; i++)
      risp=Math.max(risp, v[i]);
   return risp;
}