Newsgroup: it.comp.java
Titolo: missing return statement

Salve,
sapreste dirmi perché mi da il seguente errore:
        missing return statement
 static double calcop (double x, String segno, double y)
Ecco il sorgente:
public class prova {
 static double calcop (double x, String segno, double y) {
   if (segno.equals("+"))
     return x + y;
   else
   if (segno.equals("-"))
     return x - y;
   else
   if (segno.equals("*"))
     return x * y;
   else
   if (segno.equals("/"))
     return x / y;
   else
   if (segno.equals("^"))
     return Math.pow (x, y);
 }
 public static void main (String args []) {
  System.out.println (calcop (4, "-", -2));
 }
}
Grazie
--
Luigi
http://web.tiscali.it/luigi_web
byte...@hotmail.com
ICQ 46240443

semplice:
e se segno = "a"?
in questo caso il return dove sta?
devi mettere un:
else
{
    return qualche cosa.....
}
ovviamente devi prevedere una variabile double es: double ris=0;
e poi valorizzarla a seconda del caso
ris=x*y;
return ris;
NB: è sempre meglio mettere le {} nei blocchi if-else anche quando c'è una
sola istruzione, così non rischi di fare macelli di carattere logico...dammi
retta

Se il segno è == a "a" non deve ritornare niente... solo i queo 5 casi deve
fare qualcosa... in C++ si può fare! Cmq assegno un valore a una var ad ogni
if, e poi ritorno il suo valore.
ciao


dunque:
se il metodo restituisce qualche cosa deve per forza esserci un return
finale....
se lo metti dopo un if deve "per forza" esserci un else
oppure fai cosě:
static double calcop (double x, String segno, double y) {
double ris;
   if (segno.equals("+"))
   {
       ris= x + y;
   }
   else if (segno.equals("-"))
   {
       ris = x - y;
   }
   else if (segno.equals("*"))
   {
       ris x * y;
   }
   else if (segno.equals("/"))
   {
      ris =  x / y;
    }
   else if (segno.equals("^"))
   {
      ris = Math.pow (x, y);
   }
   return ris
 }
 public static void main (String args []) {
  System.out.println (calcop (4, "-", -2));
 }
}
ovviamente essendoci return ris la variabile devve essere inizializzata a 0
o a 1 fai come vuoi.......
cmq in qualunque caso un return ci deve essere non puň non restituire
nulla...E' IMPOSSIBILE

se proprio non gli vuoi far tornare nulla potresti fare cosě:
calss Calcolo {
static String risultato;
static void calcop (double x, String segno, double y) {
double ris;
int flag = 0;
risultato = "impossibile eseguire l'operazione";
   if (segno.equals("+"))
   {
       ris= x + y;
       risultato = "x+y" + ris;
   }
   else if (segno.equals("-"))
   {
       ris = x - y;
       risultato = "x-y" + ris;
   }
   else if (segno.equals("*"))
   {
       ris x * y;
       risultato = "x*y" + ris;
   }
   else if (segno.equals("/"))
   {
      ris =  x / y;
      risultato = "x/y" + ris;
    }
   else if (segno.equals("^"))
   {
      ris = Math.pow (x, y);
      risultato = "x^y" + ris;
   }
 }
 public static void main (String args []) {
  calcop (4, "-", -2)
  System.out.println (risultato);
 }
}
N.B.secondo l'aritmetica delle stringhe una stringa + una var = una stringa
una soluzione in un modo o nell'altro si trova, dipende da quello che vuoi
spero di esserti stato utile

 risultato = "impossibile eseguire l'operazione";
elimina   int flag=0;     faceva parte di un'altra idea un po laboriosa
(ovviamente sempre funzionante :-)  ).

 fare qualcosa... in C++ si può fare!
Meno male che Java ci evita qualche bug insidioso...
uL

 if, e poi ritorno il suo valore.
In questo caso fai
... else throw new UtontoAllaTastieraException(segno);
ovvero, ricorri ad una eccezione.
Ciao,
	Stefano

 in C++ si pu• fare!
Il fatto che si possa fare non significa che sia auspicabile, o nemmeno 
positivo. ;-)
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun