Missing return statement: il compilatore non è riuscito a trovare l'istruzione return per un metodo con tipo di ritorno.

Questo è dovuto alla "non corretta" implementazione del metodo.

Quando hai a che fare con metodi che ritornano qualcosa è bene adottare un paradigma di programmazione più ferreo:

Questi due codici, ad esempio, sono esattamente equivalenti:

Codice 1:
codice:
public int metodo() {
   if ( condizione ) {
      return 10;
   } else {
      return 20;
   }
}
Codice 2:
codice:
public int metodo() {
   int risultato = -1;

   if ( condizione ) {
      risultato = 10;
   } else {
      risultato = 20;
   }

   return risultato;
}
Ma il secondo, oltre ad essere più stilisticamente bello, più manutenibile e più filosoficamente corretto, è anche sintatticamente più gradito dal compilatore.

Questo perchè il compilatore non può sapere a priori che uno dei due rami del costrutto IF verrà sicuramente eseguito e non è in grado, quindi, di essere sicuro che venga eseguita una delle due istruzioni return (evidentemente, questo comporterebbe un overhead da parte del compilatore, che ne peggiorerebbe le performances).

Consiglio spassionato: usa sempre la seconda forma, e avrai meno problemi a gestire codici complessi (ricorda che una funzione, anche in matematica, è una regola che associa ad uno o più valori, uno ed un solo valore. Quindi in una funzione ci deve essere sempre uno ed un solo return).

Ciao.