O problema esta que voce esta colocando todos os return dentro de if e nesse caso nao existe um para a propria classe.
E
edgarjr
Vlw cara tirou minha dúvida!!! Obrigado
ViniciusLM
Eu estava em um atendimento de help desk dai nao deu pra ajudar muito rsrsrrs…
Mas aconselho usar variavel ao invez de retornar o valor propriamente dito, por exemplo:
Ou seja, ele só vai retornar alguma coisa se passar no primeiro if, do contrário não retorna nada, daí o “missing return statement”.
Pra resolver isso, tente colocar um return fora do if ou dentro de um else:
cara não sei se estou fazendo errado mais da uma olhada
packageLogicadeProgramacao;publicclassConta{//Atributosintnumero;Stringdono;doublesaldo;doublelimite;booleanativar1=false;booleanativar2=true;//MétodospublicStringSacar(doublequantidade1){//Esta dando erro aqui. O erro é assim: "missing return statement"if(this.ativar1){if(quantidade1<=this.saldo&&quantidade1>0){doublenovoSaldo1=this.saldo-quantidade1;this.saldo=novoSaldo1;return"O Saldo agora é: "+this.saldo;}else{return"Valor Inválido";}}returnnull;//Adiciona algum retorno aqui}publicStringDepositar(doublequantidade2){//Esta dando erro aqui. O erro é assim: "missing return statement"if(this.ativar2){if(this.saldo+quantidade2>this.limite){return"Valor Inválido";}elseif(quantidade2<=0){return"Valor Inválido";}else{doublenovoSaldo2=this.saldo+quantidade2;this.saldo=novoSaldo2;return"O Saldo Agora é: "+this.saldo;}}returnnull;//Adiciona algum retorno aqui}}
henriqueluz
Como o amigo de cima citou nos posts anteriores:
O seu return está dentro de um bloco “if”, e se o bloco não for satisfeito o método não retornará nada.
Coloque algum return fora do bloco e tudo se resolve.
Abs,
R
RodrigoM91
Boa tarde montanha007,
Eu percebi que dava pra simplificar um pouco seu código e deixa-lo mais legivel, da uma olhada:
publicclassConta{privatedoublesaldo;//testando o método depositar e sacar !publicstaticvoidmain(String[]args){Contac=newConta();System.out.println(c.depositar(20.00));System.out.println(c.sacar(5.00));}publicStringsacar(doublevalor){if((valor>0)&&(valor<=getSaldo())){setSaldo(getSaldo()-valor);return"O Saldo agora é: "+getSaldo();}else{return"Valor Inválido";}}publicStringdepositar(doublevalor){if(valor<=0){return"Valor Inválido";}else{setSaldo(getSaldo()+valor);return"O Saldo Agora é: "+getSaldo();}}publicdoublegetSaldo(){returnsaldo;}publicvoidsetSaldo(doublesaldo){this.saldo=saldo;}}
Espero ter ajudado!
Abraço!
WellingtonRamos
riqueluz:
Como o amigo de cima citou nos posts anteriores:
O seu return está dentro de um bloco “if”, e se o bloco não for satisfeito o método não retornará nada.
Coloque algum return fora do bloco e tudo se resolve.
Abs,
Ou então, crie um else para o if principal.
//Não funciona pois, se não entrar no if, não há retorno
public Object testReturn() {
if(condicao()) {
return;
}
}
//Funciona pois, se não entrar no if, entrará no else e no else há retorno também
public Object testReturn() {
if(condicao()) {
return returnSomething();
} else {
return returnOtherThing();
}
}
Essas regras valem para ifs encadeados. A melhor solução para isso é criar uma variável de escopo local (método). Receberá o valor dentro dos ifs e, ao final, será retornado. Aliás, essa solução já foi, inclusive exemplificada acima.
Meth
O compilador precisa ter certeza que o retorno é garantido…
Quando voce usa um if pode ser que a condicao falhe e nao tenha retorno…
Se voce colocar um else após o if externo seu codigo funciona…
if(condicao){ //<-------Se a condicao desse if falhar eu irei retornar o que?
if(outraCondicao){return x;}
else{return y;}
}
else{return z;}//<----.Se a condicao do if falhar terei uma alternativa