[RESOLVIDO] Exercicio Conta Bancária

5 respostas
aesbragantino

Boa tarde pessoal,

Sou novato em java e estou tentando fazer um exercício de uma conta bancária que armazena 50 clientes e seus respectivos depósitos, saques e etc.
Enfim o problema é o seguinte, eu capturo o nome e o numero da conta em um case, em outro case eu capturo o valor do deposito e depois em outro case
eu imprimo o numero da conta, nome do cliente e saldo, mas existe um erro que nao estou conseguindo resolver, hora ele só captura nome e conta e hora
ele so captura o saldo, já instanciei em varios locais para ver se funcionava e sempre da esse erro.

MAIN

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; 
import java.util.Scanner;

public class MainConta{
	public static void main(String args []){
        final int TotalDeContas = 50;
		Conta ct[] = new Conta[TotalDeContas]; 


		for(int i = 0; i < TotalDeContas; i++){



            do{

				System.out.print("\n[1] - Criar Conta");
				System.out.print("\n[2] - Depositar");
				System.out.print("\n[3] - Sacar");
				System.out.print("\n[4] - Imprimir");
				System.out.print("\n[5] - Sair");

				Scanner sc = new Scanner(System.in);
				int opcao;

				System.out.print("\n\nQual a opcao escolhida? ");
                opcao = sc.nextInt();

				switch(opcao){


					case 1: ct[i] = new Conta();
						    if(i == TotalDeContas + 1){
						       System.out.print("ERRO! Numero de contas atingido!\n\n");
						       break;
					        }
						    BufferedReader brc = new BufferedReader(new InputStreamReader(System.in)); //
						    int numeroConta;
					        String numConta ="";
					        System.out.print("\nDigite o numero da conta: ");
					        try{
					            numConta = brc.readLine(); 
					        }catch (IOException e){
					        	System.out.print("\nERRO! Conta Invalida");
					        }
					        numeroConta = Integer.parseInt(numConta); 
					        ct[i].setNumero(numeroConta); 

					        String nomeUsuario ="";
					        Scanner nm = new Scanner(System.in);
					        System.out.print("\nDigite o nome do requerente: ");
					        nomeUsuario = nm.nextLine();
					        ct[i].setNome(nomeUsuario);
					        i++;
					        break;

					case 2:if(i == 0){
						       System.out.print("\nERRO! Nenhuma conta cadastrada\n");
						       break;
					        }
					        ct[i] = new Conta();
					        int nConta = 0;
					        System.out.print("\nInforme o numero da conta: ");
					        nConta = sc.nextInt();
					        double dep = 0;
					        System.out.printf("Insira o valor do deposito:R$ ");
					        dep = sc.nextDouble();
					        ct[i].depositar(dep);
					        break;

					case 3: System.out.print("\nAinda nao fiz");
					        break;

					case 4: if (i == 0){
						    	System.out.print("\nERRO! Nenhuma conta cadastrada!\n");
						    	break;
					 		}
							System.out.print("\nInforme o numero da conta: ");
							int nCta = 0;
							nCta = sc.nextInt();
							ct[nCta].imprimirEstado();
							break;
					case 5: System.exit(0);

					default : System.out.print("\nOpcao Invalida\n\n");
				}

			}while (true);
		}
	}
}

CLASSE CONTA

public class Conta {
  private int numero; 
  private String nomeTitular;
  private double saldo;

  public Conta(){ 
  }

  public double getSaldo(){ 
  	return saldo;
  }

  public void depositar(double valor){
  	if(valor >= 0){ 
  		saldo+=valor;
  	}else{
  		System.out.print("\nValor invalido\n\n");
  	}
  }

  public void sacar(double valor){
  	if(valor < getSaldo() && valor > 0){ 
  		saldo-=valor;
  	}else{
  		if(valor < 0){
  			System.out.println("\nValor invalido\n\n"); 
  		}else{
  			System.out.println("Saldo Insuficiente\n\n"); 
  		}
  	}
  }

  public String getNome(){
  	return nomeTitular;
  }

  public void setNome(String nome){
  	 nomeTitular = nome;
  }

  public int getNumero(){
  	return numero;
  }

  public void setNumero(int num){
  	numero = num;
  }

  public void imprimirEstado(){
  	System.out.println("\nConta..: " + numero);
  	System.out.println("\nTitular: " + nomeTitular);
  	System.out.println("\nSaldo..: " + saldo);
  }

}

5 Respostas

guijocargo

aesbragantino, coloca ai tambem o erro que aparece para voce na sua IDE, ajudaria a te ajudar :slight_smile:

aesbragantino

Bom dia guijocargo , então executei o código no Jcreator e ele executa perfeitamente não aponta nenhum erro, o problema e que não estou conseguindo capturar os dados, hora ele captura nome e numero da conta que estão no case “CRIAR CONTA”, hora captura o deposito que esta no case “DEPOSITAR”, quando vou imprimir ele imprime assim

Numero da Conta: 1
Nome do Cliente: Fulano de Tal
Saldo: 0.0

OU

Numero da Conta: 0
Nome do Cliente: null
Saldo: 100.0

Ele não liga o deposito a conta desejada.

Obrigado pela atenção :smiley:

Bruno.Souza.PW

vc tem que procurar a conta no Array que vc criou utilizando um looping…

utilizando assim vc esta depositando em uma nova conta e não, na conta que o usuario inseriu…

ct[i].depositar(dep);
R

O problema está nas linhas 69 quando você chama ct[i].depositar(dep) e 82 quando você está chamando ct[nCta].imprimirEstado()

Quando você adiciona uma conta você coloca a conta 1 na posição 0 do vetor, então ao chamar ct[nCta].imprimirEstado() para conseguir os valores inseridos você precisa chamar da seguinte forma:

ct[i-1].depositar(dep)

ct[nCta-1].imprimirEstado()

Existem mais formas também, mas isso resolve ^^

aesbragantino

[color=red]RESOLVIDO. Obrigado a todos :smiley: [/color]

Criado 25 de junho de 2012
Ultima resposta 26 de jun. de 2012
Respostas 5
Participantes 4