Boa noite amigos, estou tentando simular um pequeno sistema bancário, simples, onde preciso passar para uma classe “Conta” um objeto “cliente”, porém não há um erro ao tentar fazer isso.
Caso alguém possa me ajudar, segue a classe Conta e a Main…O erro está na linha 71 da classe main, quando passo “cliente” para o construtor da classe.
ArrayList<Cliente> cl;
ArrayList<Conta> cc;
Scanner in;
public BancoMain(){
cl = new ArrayList();
cc = new ArrayList();
in = new Scanner(System.in);
}
public static void main(String[] args) {
int op;
Scanner opcao = new Scanner(System.in);
BancoMain b = new BancoMain();
System.out.print("\n***** Banco RoubaBem iLtda *****");
System.out.print("\n\nDigite a opcao desejada: ");
System.out.print("\n1 - Cadastrar Cliente;");
System.out.print("\n2 - Cadastrar nova Conta;");
System.out.print("\n3 - Alterar dados de Cliente;");
System.out.print("\n4 - Alterar dados da Conta;");
System.out.print("\n5 - Excluir Cliente;");
System.out.print("\n6 - Exluir Conta;");
System.out.print("\n0 - Encerrar o Sistema;");
op = opcao.nextInt();
switch(op){
case 1:
b.cadastraCliente();
break;
case 2:
b.novaConta();
break;
}
}
public void cadastraCliente(){
String nome;
String cpf;
String email;
System.out.print("\n\nDigite o cpf do Cliente: ");
cpf = in.nextLine();
System.out.print("\nDigite o nome do Cliente: ");
nome = in.nextLine();
System.out.print("\nDigite o email do cliente: \n");
email = in.nextLine();
Cliente cliente = new Cliente(nome,cpf,email);
cl.add(cliente);
}
public void novaConta(){
int numero;
String tipo;
double saldo;
Cliente cliente;
System.out.print("\n\nDigite o numero da nova conta: ");
numero = in.nextInt();
System.out.print("\n'Conta Corrente' ou 'Poupança'? ");
tipo = in.nextLine();
System.out.print("\nQual o valor do saldo inicial? ");
saldo = in.nextDouble();
Conta contacor = new Conta(numero,tipo,saldo,cliente);
cc.add(contacor);
}
}[/code]
e
[code]
public class Conta {
private int numero;
private String tipo;
private double saldo;
private Cliente cliente;
public Conta(int num,String tp,double sd,Cliente cl){
numero = num;
tipo = tp;
saldo = sd;
cliente = cl;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
pelo que deu dara nota na linha 71 voce esta passando uma referencia do Classe Cliente ainda nao instaciada.
voce deve instancia o cliente, antes de submeter o objeto.
tente dessa forma.
public void novaConta(){
int numero;
String tipo;
double saldo;
Cliente cliente = new Cliente();
System.out.print("\n\nDigite o numero da nova conta: ");
numero = in.nextInt();
System.out.print("\n'Conta Corrente' ou 'Poupança'? ");
tipo = in.nextLine();
System.out.print("\nQual o valor do saldo inicial? ");
saldo = in.nextDouble();
Conta contacor = new Conta(numero,tipo,saldo,cliente);
cc.add(contacor);
}
public void novaConta(){
int numero;
String tipo;
double saldo;
String nome;
String cpf;
String email;
System.out.print("\n\nDigite o cpf do Cliente: ");
cpf = in.nextLine();
System.out.print("\nDigite o nome do Cliente: ");
nome = in.nextLine();
System.out.print("\nDigite o email do cliente: \n");
email = in.nextLine();
Cliente cliente = new Cliente(nome,cpf,email);
cl.add(cliente);
System.out.print("\n\nDigite o numero da nova conta: ");
numero = in.nextInt();
System.out.print("\n'Conta Corrente' ou 'Poupança'? ");
tipo = in.nextLine();
System.out.print("\nQual o valor do saldo inicial? ");
saldo = in.nextDouble();
Conta contacor = new Conta(numero,tipo,saldo,cliente);
cc.add(contacor);
}
Funcionou perfeitamente, o único problema é que dessa forma, tenho que cadastrar um cliente e uma conta sempre, não tendo como um cliente antigo abrir uma nova conta por exemplo.
Desculpe se eu estiver sendo chato com isso, mas é que não encontrei nenhuma situação parecida pela internet da vida.
basta que ao criar a nova conta voce passe um cliente valido.
como voce verificou estava dando erro, porque estava passando um cliente invalido (uma referencia da classe Cliente ainda nao instaciada)
um exemplo pratico em cima do seu codigo seria cria 10 contas para um mesmo cliente seria:
import java.util.Scanner;
import java.util.ArrayList;
public class BancoMain {
private ArrayList<Cliente> cl;
private ArrayList<Conta> cc;
Scanner in;
public BancoMain() {
cl = new ArrayList<Cliente>();
cc = new ArrayList<Conta>();
in = new Scanner(System.in);
}
public static void main(String[] args) {
int op;
Scanner opcao = new Scanner(System.in);
BancoMain b = new BancoMain();
System.out.print("\n***** Banco RoubaBem iLtda *****");
System.out.print("\n\nDigite a opcao desejada: ");
System.out.print("\n1 - Cadastrar Cliente;");
System.out.print("\n2 - Cadastrar nova Conta;");
System.out.print("\n3 - Alterar dados de Cliente;");
System.out.print("\n4 - Alterar dados da Conta;");
System.out.print("\n5 - Excluir Cliente;");
System.out.print("\n6 - Exluir Conta;");
System.out.print("\n0 - Encerrar o Sistema;");
op = opcao.nextInt();
switch (op) {
case 1:
b.cadastraCliente();
break;
case 2:
b.novaConta();
break;
}
}
public void cadastraCliente() {
String nome;
String cpf;
String email;
System.out.print("\n\nDigite o cpf do Cliente: ");
cpf = in.nextLine();
System.out.print("\nDigite o nome do Cliente: ");
nome = in.nextLine();
System.out.print("\nDigite o email do cliente: \n");
email = in.nextLine();
Cliente cliente = new Cliente(nome, cpf, email);
cl.add(cliente);
}
public void novaConta() {
int numero;
String tipo;
double saldo;
String nome;
String cpf;
String email;
System.out.print("\n\nDigite o cpf do Cliente: ");
cpf = in.nextLine();
System.out.print("\nDigite o nome do Cliente: ");
nome = in.nextLine();
System.out.print("\nDigite o email do cliente: \n");
email = in.nextLine();
Cliente cliente = new Cliente(nome, cpf, email);
cl.add(cliente);
System.out.print("\n\nDigite o numero da nova conta: ");
numero = in.nextInt();
System.out.print("\n'Conta Corrente' ou 'Poupança'? ");
tipo = in.nextLine();
System.out.print("\nQual o valor do saldo inicial? ");
saldo = in.nextDouble();
Conta contacor = new Conta(numero, tipo, saldo, cliente);
cc.add(contacor);
criaContaClienteAntigo();
}
public void criaContaClienteAntigo() {
if (cl != null && cl.size() > 0) {
Cliente cli = cl.get(0);
novaConta(cli);
}
}
public void novaConta(Cliente cliente) {
int numero;
String tipo;
double saldo;
System.out.print("\n\nDigite o numero da nova conta: ");
numero = in.nextInt();
System.out.print("\n'Conta Corrente' ou 'Poupança'? ");
tipo = in.nextLine();
System.out.print("\nQual o valor do saldo inicial? ");
saldo = in.nextDouble();
Conta contacor = new Conta(numero, tipo, saldo, cliente);
cc.add(contacor);
System.out.println("Conta Criada Cliente Existente");
}
}
como ta para nota esta sendo criada uma nova conta para um cliente existente, que está adicionado na lista de cliente.