Pessoal, eu tenho que instanciar um novo objeto p/ comparar o saldo?

3 respostas
F

estarei postando aqui as 2 classes que possuo:

import java.util.Scanner;

public class Menu {
	int contador = 0, opcao;
	int  i = 0, numConta = 0;	
	Scanner input= new Scanner(System.in);
	static Menu menu = new Menu();	
	Conta[] conta= new Conta[100]; 


	public static void main(String[] args) {
		menu.menu();
	}
	
	public void menu(){
		
		System.out.println("Qual operação deseja executar?");
		System.out.println("1-Cadastrar Conta   2-Alterar Conta   3-Excluir Conta	" +
						   "4-Operações da Conta   0-Sair");
		opcao = input.nextInt();
		switch(opcao){
			case 1:	cadastro();
					System.out.println("Conta(s) cadastrada(s)!");
				break;
		
			case 2: alterar();
				break;
			
			case 3: excluir();
				break;
	
			case 4: operar();
				break;
					
			case '0': 
				break;
		
			default:  System.out.println("Opcao Invalida");
		}
		menu();
	}
	
	public void print(Conta[] conta){
		for (i=0; i < contador; i++){
			System.out.printf("%s\n\n", conta[i].toString());
		}		
	}
	
	
	public void cadastro(){
		System.out.println("Deseja criar qtas contas:");
		contador = input.nextInt();
		for (i=0; i < contador; i++){
			System.out.println("1 - Conta Comum		2 - Conta Especial		0 - Retornar");
			opcao = input.nextInt();

			switch(opcao){
				case 1:		
					Conta contaC = new Conta(null, 0, 0);
					contaC.criaConta();
					conta[i]= contaC;
					break;
				
				case 2:
					ContaEspecial contaE = new ContaEspecial(null, 0, 0, 0);
					contaE.criaConta();
					conta[i]= contaE;
					System.out.println("Digite o limite:"); 
					contaE.setLimite();
					break;
				
				case '0':
					menu();
					break;
				
				default:  System.out.println("Opcao Invalida!");
			}
		}
	}
	
	public void alterar(){
		System.out.println("Qual conta deseja alterar?");
		System.out.println("Informe o nº da conta:");
		numConta = input.nextInt();
		for (i = 0; i < conta.length; i++){
			if (numConta == conta[i].numConta){
				System.out.printf("\n%s\n\n", conta[i].toString());
				System.out.println("Qual campo da conta desejas alterar:");
				System.out.println("\n1- Nº da Conta:");
				System.out.println("2- Nome:");
				System.out.println("3- saldo:");
				
				if (conta[i] instanceof ContaEspecial){
					System.out.println("4- Limite:");
				}
				System.out.println("0- Retorna:");
				opcao = input.nextInt();
				
				switch(opcao){
					case 1:	
						System.out.println("Digite o nº da conta:");
						conta[i].setNumConta();
						break;
				
					case 2:
						System.out.println("Digite o novo titular:");
						conta[i].setNome();
						break;
					
					case 3:
						System.out.println("Digite o novo saldo:");
						conta[i].setSaldo();
						break;
				
					case 4:
						System.out.println("Digite o novo limite:");
						ContaEspecial ce = (ContaEspecial) conta[i];
						ce.setLimite();
						break;				
					
					case 0:
						menu();
						break;
				
					default:  System.out.println("Opcao Invalida!");
				}System.out.println("Campo alterado com sucesso");
				menu();

			}else{
				System.out.println("Conta inexistente!");
				alterar();
			}
		}	
	}
	public void excluir(){
		
	}
	
	public void operar(){
		System.out.println("Digite o nº da conta:");
		numConta = input.nextInt();
		try{ 
			for (i = 0; i < conta.length; i++){
				if (numConta != conta[i].numConta){
					throw new ContaInexistenteException();
				}	
					System.out.println("Qual operação deseja executar?");
					System.out.println("1 - Saque		2 - Depósito		0 - Retornar");
					opcao = input.nextInt();
			
					switch(opcao){
						case 1:	
							conta[i].saque();
							break;
				
						case 2:
							break;
				
						case '0':
							operar();
							break;
				
						default:  System.out.println("Opcao Invalida!");
					}
			}		
		}catch( ContaInexistenteException e ){
			System.out.println( "Conta Inexistente!" );
		}
	}
}
import java.util.Scanner;

public class Conta {
	public String nome;
	public int numConta;
	public float saldo;
	public float valor;
	
	Scanner input = new Scanner(System.in);
	public Conta(String n, int nCont, float s){
		nome = n;
		numConta = nCont;
		saldo = s;
		
	}
	
	public Conta(String n, int nCont){
		nome = n;
		numConta = nCont;
		saldo = 0;
	}
	
	public void setNome(){
		this.nome= input.next();
	}
	
	public void setNumConta(){
		this.numConta = input.nextInt();
	}
	
	public void setSaldo(){
		this.saldo= input.nextFloat();
	}
	
	public String getNome(){
		return nome;
	}
	
	public int getNumConta(){
		return numConta;
	}
	
	public float getSaldo(){
		return saldo;
	}
	
	public void deposito(float val ){
    	saldo = saldo + val;

	}
	
	public void saque(){    
		System.out.println("Digite o valor para saque:");
		float val= input.nextFloat();
		try {
			if( conta[i].saldo < val ){ 
				throw new SaldoInsuficienteException( );
			}	
			saldo -= val;
		}catch( SaldoInsuficienteException e ) {
			System.out.println("Saldo Insuficiente ");
		}
	}
		
	public void criaConta(){
		System.out.println("Digite o nome: ");
		setNome();
		System.out.println("Digite o nº da conta: ");
		setNumConta();
		System.out.println("Digite o saldo: ");
		setSaldo();

	}
	
	public String toString(){
		return "Cliente: " +getNome()+ "\nConta: " +getNumConta()+ "\nSaldo: " +getSaldo();
	}
	
}

Gostaria de saber como fazer para comparar o saldo(já existente de um objeto do array) com o valor a ser sacado
e necessário fazer um new conta?

3 Respostas

KaiqueF

Veja se eu entendi sua dúvida

vc se refere a função saque q vc chama assim : conta[i].saque(); ??
Se conta[i] q é um objeto do tipo conta, já está instanciado vc pode fazer as comparações normalmente. Era essa sua dúvida?

peczenyj

Sugiro a leitura:

http://blog.caelum.com.br/2006/09/14/nao-aprender-oo-getters-e-setters/

F

vlw pessoal, resolvido o problema!

Criado 6 de agosto de 2008
Ultima resposta 6 de ago. de 2008
Respostas 3
Participantes 3