While, if ou o quê?

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()…

T+ e mto obrigado

[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].

flwsss

Tem razão, já corrigi lá em cima.

É que eu não compilei o programa. :stuck_out_tongue:

Muito obrigado pessoal…sou novo no fórum e realmente esse é o melhor fórum sobre java…
Respostas e Soluções imediatas…
Valeu!!!
T+