Olá pessoal...
Tenho a seguinte classe, que possue um método deposita();
importjava.util.*;publicclassConta{intnumeroConta;StringnomeCliente;doublesaldo;doublelimite;voiddeposita(){Scannervalor=newScanner(System.in);System.out.println("Especifique um valor para depósito");doublequantia=valor.nextDouble();if(quantia<=0){System.out.println("Especifique um valor válido");}else{doublenovosaldo=this.saldo+quantia;this.saldo=quantia;System.out.println("Seu saldo é de R$"+saldo);}}
Porém, reparem que no if(linha 11) e else(linha 14):
Se eu especificar um valor <0 é exibida a mensagem...e fica nisso mesmo(Porque eu nao sei que código colocar). Eu gostaria de uma ajuda, um exemplo ou o que for....pois eu queria que quando a pessoa colocasse uma quantia <0...exibisse a mensagem e voltasse para o início do método deposita()...
importjava.util.*;publicclassConta{intnumeroConta;StringnomeCliente;doublesaldo;doublelimite;voiddeposita(){Booleanx=true;Scannervalor=newScanner(System.in);System.out.println("Especifique um valor para depósito");doublequantia=valor.nextDouble();// Existe formas mais elegantes de se fazer isso, mas vou colocar algo bem rapidofimLoop:while(x){if(quantia>0){breakfimLoop;}else{System.out.println("Especifique um valor válido");}}doublenovosaldo=this.saldo+quantia;this.saldo=quantia;System.out.println("Seu saldo é de R$"+saldo);}}
Bom é uma POG, amanhã se lembrar venho aqui colocar algo mais legal... Sono esta pegando!!!
ViniGodoy
Separe em funções. Fica mais organizado e mais elegante:
importjava.util.*;publicclassConta{privateintnumeroConta;privateStringnomeCliente;privatedoublesaldo;privatedoublelimite;privatebooleanrealizaDeposito(doublequantia){if(quantia<=0){System.out.println("Especifique um valor válido");returnfalse;}this.saldo+=quantia;}voiddeposita(){System.out.println("Especifique um valor para depósito");do{Scannervalor=newScanner(System.in);System.out.println("Especifique um valor para depósito");}while(!realizaDeposito(valor.nextDouble()));System.out.println("Seu saldo é de R$"+saldo);}}
O ideal meeesmo é que o método realizaDeposito fosse o método deposita. E, ao invés de escrever diretamente o erro na tela e retornar um bool, ele lançasse uma exceção de IllegalArgumentException. O seu código que questiona o usuário e faz as tarefas de GUI estaria na classe que usa a conta. Assim ficaria fácil de vc mudar esse sistema para o Swing, se vc quisesse depois. Via de regra as classes de negócio (como conta), devem conter lógica de negócio, e nada mais.
FilhoDoRei
do{Scannervalor=newScanner(System.in);System.out.println("Especifique um valor para depósito");doublequantia=valor.nextDouble();}while(!realizaDeposito(quantia));// aquiSystem.out.println("Seu saldo é de R$"+saldo);
pra ficar bão faltou so um parametro [color=red]quantia[/color].
flwsss
ViniGodoy
Tem razão, já corrigi lá em cima.
É que eu não compilei o programa.
samsg
Muito obrigado pessoal…sou novo no fórum e realmente esse é o melhor fórum sobre java…
Respostas e Soluções imediatas…
Valeu!!!
T+