A classe Banco deve ter um método adiciona , que recebe uma referência a Conta
como argumento e guarda essa conta.
Você deve inserir a Conta em uma posição da array que esteja livre. Existem várias maneiras para
você fazer isso: guardar um contador para indicar qual a próxima posição vazia ou procurar por uma
posição vazia toda vez. O que seria mais interessante?
Se quiser verificar qual a primeira posição vazia (nula) e adicionar nela, poderia ser feito algo como:
publicvoidadiciona(Contac){
for(inti=0; i < this.contas.length; i++){//verificarseaposiçãoestávazia//adicionarnoarray}
}
É importante reparar que o método adiciona não recebe titular, agencia, saldo, etc. Essa seria uma
maneira nem um pouco estruturada, muito menos orientada a objetos de se trabalhar. Você antes
cria uma Conta e já passa a referência dela, que dentro do objeto possui titular, saldo, etc.
Meu método está:
publicvoidadiciona(Contac){for(inti=0;i<this.contas.length;i++){if(contas[i]==null){if(contas[i].equals(c)==true){System.out.println("Conta igual!");}else{contas[i]=c;System.out.println("Conta salva!");}}else{System.out.println("Espaço já alocado!");}}}
Porém ele sempre retorna NullPointerException quando vai rodar o método.
Tem que colocar a classe?
Tem que colocar o número de posições certinho na pergunta?
I
Iohannes
Umas ideias para tu:
1 - Classe Banco:
publicclassBanco{privatestaticfinalintTAMANHO=5;privateintcodigoBanco;privateintindice=0;privateStringnomeBanco;privateAgencia[]agencias=newAgencia[TAMANHO];/* * Métodos de banco */publicvoidadicionarConta(Stringagencia,Contaconta){for(inti=0;i<indice;i++){if(getAgencia()[i].getNumeroAgencia().equals(agencia))getAgencia()[i].setConta(conta);}}/* * Métodos acessores e modificadores */publicvoidsetCodigoBanco(intcodigoBanco){this.codigoBanco=codigoBanco;}publicintgetCodigoBanco(){returncodigoBanco;}publicvoidsetNomeBanco(StringnomeBanco){this.nomeBanco=nomeBanco;}publicStringgetNomeBanco(){returnnomeBanco;}publicvoidsetAgencia(Agenciaagencia){if(indice<TAMANHO)this.agencias[indice++]=agencia;elseSystem.out.println("Limite máximo de ag~encias atingido!");}publicAgencia[]getAgencia(){returnagencias;}}
2 - Classe Agência
publicclassAgencia{privatestaticfinalintTAMANHO=5;privateintindice=0;privateStringnumeroAgencia;privateConta[]contas=newConta[TAMANHO];privateStringendereco;/* * Métodos acessores e modificadores */publicvoidsetNumeroAgencia(StringnumeroAgencia){this.numeroAgencia=numeroAgencia;}publicStringgetNumeroAgencia(){returnnumeroAgencia;}publicvoidsetConta(Contaconta){if(indice<TAMANHO)this.contas[indice++]=conta;elseSystem.out.println("Limite máximo de contas atingido!");}publicConta[]getConta(){returncontas;}publicvoidsetEndereco(Stringendereco){this.endereco=endereco;}publicStringgetEndereco(){returnendereco;}}
3 - Classe Conta
publicclassConta{privateStringnumeroConta;privateStringtipoConta;privatedoublesaldo;/* * Métodos de conta */publicvoidefetuarDeposito(doublequantia){if(quantia>=0)setSaldo(getSaldo()+quantia);elseSystem.out.println("Valor inválido!");}publicvoidefetuarSaque(doublequantia){if(quantia>=0){if(quantia<getSaldo())setSaldo(getSaldo()-quantia);elseSystem.out.println("Saldo insuficiente!");}elseSystem.out.println("Valor inválido!");}publicvoidemitirExtrato(){System.out.println("+------------------------------+");System.out.println("|Cliente: |");System.out.println("+------------------------------+");}/* * Métodos acessores e modificadores */publicvoidsetNumeroConta(StringnumeroConta){this.numeroConta=numeroConta;}publicStringgetNumeroConta(){returnnumeroConta;}publicvoidsetTipoConta(StringtipoConta){this.tipoConta=tipoConta;}publicStringgetTipoConta(){returntipoConta;}privatevoidsetSaldo(doublesaldo){this.saldo=saldo;}publicdoublegetSaldo(){returnsaldo;}}
4 - Classe SistemaBancario (Main):
publicclassSistemaBancario{privateBanco[]bancos=newBanco[50];publicstaticvoidmain(String[]args){SistemaBancariosistemaBancario=newSistemaBancario();Bancobanco1=newBanco();Agenciaagencia1=newAgencia();Contaconta1=newConta();Contaconta2=newConta();conta1.setNumeroConta("22756-9");conta1.setTipoConta("CC");conta1.efetuarDeposito(10.00);conta2.setNumeroConta("28291-0");conta2.setTipoConta("CP");conta2.efetuarDeposito(10.00);agencia1.setNumeroAgencia("0520-7");agencia1.setEndereco("Avenida São Paulo, 1457, Centro, Loanda-Pr");banco1.setCodigoBanco(17);banco1.setNomeBanco("Banco do Brasil");banco1.setAgencia(agencia1);banco1.adicionarConta("0520-7",conta1);banco1.adicionarConta("0520-7",conta2);banco1.getAgencia()[0].getConta()[0].efetuarDeposito(998.00);banco1.getAgencia()[0].getConta()[1].efetuarDeposito(338.21);sistemaBancario.bancos[0]=banco1;System.out.println("+------------------------------+");System.out.println("| Informações do Banco Central |");System.out.println("+------------------------------+");System.out.println("| Banco: "+sistemaBancario.bancos[0].getNomeBanco()+"|");System.out.println("| Agência: "+sistemaBancario.bancos[0].getAgencia()[0].getNumeroAgencia()+"|");System.out.println("| Conta: "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[0].getNumeroConta()+" - "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[0].getTipoConta()+"|");System.out.println("| Saldo: "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[0].getSaldo()+"|");System.out.println("| Conta: "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[1].getNumeroConta()+" - "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[1].getTipoConta()+"|");System.out.println("| Saldo: "+sistemaBancario.bancos[0].getAgencia()[0].getConta()[1].getSaldo()+"|");System.out.println("+------------------------------+");}}
Rodando um teste:
staroski
Veja bem o seu código:
publicvoidadiciona(Contac){for(inti=0;i<this.contas.length;i++){if(contas[i]==null){// se contas[i] estiver null, vai entrar no ifif(contas[i].equals(c)==true){// contas[i] está null, não dá pra chamar o método equals nem nenhum método em um objeto nullSystem.out.println("Conta igual!");}else{contas[i]=c;System.out.println("Conta salva!");}}else{System.out.println("Espaço já alocado!");}}}
Faça assim:
publicvoidadiciona(Contac){for(inti=0;i<this.contas.length;i++){if(contas[i]==null){// se contas[i] estiver null, vai entrar no ifif(c.equals(contas[i])){// inverte o teste chamando o método equals a partir do objeto cSystem.out.println("Conta igual!");}else{contas[i]=c;System.out.println("Conta salva!");}}else{System.out.println("Espaço já alocado!");}}}
J
Johnliveira
O problema é que ele tá salvando somente a primeira conta que eu crio com esse código: