PDA

Visualizza la versione completa : [java]tipo di valore restituito da un metodo


matrics21
08-10-2003, 15:30
Ancora una volta problemi con java:

Ho realizzato un metodo con il quale dovrei restituire una cosa del genere:

return float+" "+float;

Il che significa che il metodo non può essere4 dichiarato come se restituisse un dato float.

Ho pensato di convertire in stringa i 2 dati int,per poterli associare allo spazio che ho inserito nel return.

Ma il fatto è che in java,se ho capito bene,non esiste il tipo di dato String,il quale è solo una classe con vari metodi implementati.

Come bisogna fare?

virusbye
08-10-2003, 15:37
Originariamente inviato da matrics21
Ancora una volta problemi con java:

Ho realizzato un metodo con il quale dovrei restituire una cosa del genere:

return float+" "+float;

Il che significa che il metodo non può essere4 dichiarato come se restituisse un dato float.

Ho pensato di convertire in stringa i 2 dati int,per poterli associare allo spazio che ho inserito nel return.

Ma il fatto è che in java,se ho capito bene,non esiste il tipo di dato String,il quale è solo una classe con vari metodi implementati.

Come bisogna fare?

spiega per benino cosa riceve in input questa funzione e cosa deve fare, che guardo di darti una mano.

matrics21
08-10-2003, 15:51
class calcoli
{
public float valuta()
{
double passo=0.1;
double x1=0.1;
double x2=x1+passo;
double y1=0;
double y2=0;
double segno=1;
double mediox=0;
double medioy=0;
double segno2=1;
while(segno>0)
{
y1=Math.log(x1)+Math.sqrt(x1+1);
y2=Math.log(x2)+Math.sqrt(x2+1);
segno=y1*y2;
x1=x2;
x2=x2+passo;
}

// RITORNA ALL'INTERVALLO DOVE CADE LO ZERO

x2=x1;
x1=x1-passo;

// SECONDA PARTE

mediox=(x1+x2)/2;
medioy=Math.log(mediox)+Math.sqrt(mediox+1);
segno=y1*medioy;
segno2=medioy*y2;
while((segno<0)||(segno2<0))
{
if(segno<0)
{
x2=mediox;
mediox=(x1+x2)/2;
y1=Math.log(x1)+Math.sqrt(x1+1);
y2=Math.log(x2)+Math.sqrt(x2+1);
medioy=Math.log(mediox)+Math.sqrt(mediox+1);
segno=y1*medioy;
segno2=medioy*y2;
}
else if(segno2<0)
{
x1=mediox;
mediox=(x1+x2)/2;
y1=Math.log(x1)+Math.sqrt(x1+1);
y2=Math.log(x2)+Math.sqrt(x2+1);
medioy=Math.log(mediox)+Math.sqrt(mediox+1);
segno=y1*medioy;
segno2=medioy*y2;
}
}
mediox=(float)Math.round(mediox*1000)/1000;
return mediox+" - "+medioy;
}
}


in pratica questo metodo prendendo la funzione y=log(x)+rad. q(x+1) deve calcolarsi il punto in cui la funzione vale 0.

per fare questo si prende un punto qualsiasi purchè appartenente al dominio,e con un passo scelto da me,dopo determinati calcoli,trova qual'è questo punto.

la funzione non ha nessun dato in input,restituisce solo le cordinate del punto in cui la funzione va a zero.

E' molto scarno come programma,ma è questo che mi hanno richiesto.

matrics21
08-10-2003, 19:42
nulla?

LeleFT
08-10-2003, 20:20
Punto primo: in Java TUTTO (tranne i tipi di dato predefinito, come int, boolean, char, byte) sono degli oggetti. String anche è un oggetto.

Quindi non vedo la difficoltà di restituire un tipo di dato String.



public String nomeMetodo() {
...// codice del metodo
return "" + float + " " + float;
}


In alternativa, visto che mi sembra che tu debba tenere distinti i due valori float, ti consiglio di implementare un metodo che ti restituisce un array di 2 float (visto che non sembra ti piacciano gli oggetti... almeno gli array!):



public float[] nomeMetodo() {
float [] tmp = new float[2];
...// codice del metodo
tmp[0] = <primofloat>;
tmp[1] = <secondofloat>;
return tmp;
}


Spero sia tutto chiaro.


Ciao.

matrics21
08-10-2003, 20:58
chiarissimo.
farò nel primo modo.

grazie :)

Loading