Olá pessoal…
Tenho a seguinte classe, que possue um método deposita();
[code]import java.util.*;
public class Conta {
int numeroConta;
String nomeCliente;
double saldo;
double limite;
void deposita(){
Scanner valor = new Scanner(System.in);
System.out.println(“Especifique um valor para depósito”);
double quantia = valor.nextDouble();
if(quantia <=0){
System.out.println(“Especifique um valor válido”);
}else{
double novosaldo=this.saldo + quantia;
this.saldo = quantia;
System.out.println("Seu saldo é de R$" + saldo);
}
}[/code]
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()…
[code]import java.util.*;
public class Conta {
int numeroConta;
String nomeCliente;
double saldo;
double limite;
void deposita(){
Boolean x = true;
Scanner valor = new Scanner(System.in);
System.out.println(“Especifique um valor para depósito”);
double quantia = valor.nextDouble();
// Existe formas mais elegantes de se fazer isso, mas vou colocar algo bem rapido
fimLoop:
while(x){
if(quantia > 0){
break fimLoop;
}else {
System.out.println(“Especifique um valor válido”);
}
}
double novosaldo=this.saldo + quantia;
this.saldo = quantia;
System.out.println(“Seu saldo é de R$” + saldo);
}
}
[/code]
Bom é uma POG, amanhã se lembrar venho aqui colocar algo mais legal… Sono esta pegando!!!
Separe em funções. Fica mais organizado e mais elegante:
[code]import java.util.*;
public class Conta {
private int numeroConta;
private String nomeCliente;
private double saldo;
private double limite;
private boolean realizaDeposito(double quantia) {
if(quantia <=0) {
System.out.println("Especifique um valor válido");
return false;
}
this.saldo += quantia;
}
void deposita(){
System.out.println("Especifique um valor para depósito");
do {
Scanner valor = new Scanner(System.in);
System.out.println("Especifique um valor para depósito");
} while (!realizaDeposito(valor.nextDouble()));
System.out.println("Seu saldo é de R$" + saldo);
}
}[/code]
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.
do {
Scanner valor = new Scanner(System.in);
System.out.println("Especifique um valor para depósito");
double quantia = valor.nextDouble();
} while (!realizaDeposito(quantia)); // aqui
System.out.println("Seu saldo é de R$" + saldo);
pra ficar bão faltou so um parametro [color=red]quantia[/color].