ARRAYS, HERANÇA E FOR
13/06/2020
0
O programa está compilando, porém, mesmo eu mudando o número de cpf, deixando igual de dois clientes ele ainda adiciona, mas não deveria acontecer isso.
Instanciei os clientes do meu arranjo no método main.
Classe Gerente
public class Gerente extends Pessoa implements InterfaceGerente{ private static final String tipo = "G"; private Cliente[] clientes; private int numClientes; private int valorContaCorrente; private int valorDaDivida; Gerente(String nome, int cpf){ super(nome, cpf); clientes = new Cliente[20]; numClientes = 0; } String retornaTipo() { return tipo; } void imprimirClientes(){ Cliente atual; System.out.println("\tNumero de clientes: " + numClientes); for (int c=0; c < numClientes; c++){ atual = clientes[c]; System.out.println("\t" + (c+1) + "\t" + atual.retornaTipo() + "\t" + atual.nome + "\t" + atual.cpf + "\t" + atual.getValorContaCorrente() + "\t" + atual.getValorDaDivida() + "\t" + atual.negativado()); } } public boolean adicionarCliente(Cliente cliente) { if ( this.numClientes == 20) { return false; } for ( int j=0; j < numClientes; j++) { // Perorrer o arranjo. if ( this.clientes[j].cpf == cliente.cpf ) { return false; } } for(int k=0; k < numClientes; k++) { if( this.clientes[k].cpf != cliente.cpf) { clientes[numClientes] = cliente; numClientes += 1; return true; } } return true; } public static void main(String[] args){ Cliente c1 = new Cliente("Cliente A", 27855, 10000); Cliente c2 = new Cliente("Cliente B", 24564, 10000); Cliente c3 = new Cliente("Cliente C", 27444, 10000); Cliente c4 = new Cliente("Cliente D", 2222, 10000); Cliente c5 = new Cliente("Cliente E", 2222, 10000); Cliente c6 = new Cliente("Cliente F", 2222, 10000); Cliente c7 = new Cliente("Cliente G", 2222, 10000); Cliente c8 = new Cliente("Cliente H", 2222, 10000); Cliente c9 = new Cliente("Cliente I", 2222, 10000); Cliente c10 = new Cliente("Cliente J", 2232, 10000); Cliente c11 = new Cliente("Cliente K", 2222, 10000); Cliente c12 = new Cliente("Cliente L", 2222, 10000); Cliente c13 = new Cliente("Cliente M", 2222, 10000); Cliente c14 = new Cliente("Cliente N", 2222, 10000); Cliente c15 = new Cliente("Cliente O", 2222, 10000); Cliente c16 = new Cliente("Cliente P", 2222, 10000); Cliente c17 = new Cliente("Cliente Q", 2222, 10000); Cliente c18 = new Cliente("Cliente R", 2222, 10000); Cliente c19 = new Cliente("Cliente S", 2222, 10000); Cliente c20 = new Cliente("Cliente T", 2222, 10000); if (ger1.adicionarCliente(c1)) System.out.println("Cliente ''" +c1.nome + "'' adicionado corretamente."); else System.out.println("Cliente ''" + c1.nome + "'' nao pode ser adicionado."); } }
Classe Cliente
Cliente(String nome, int cpf, int valorInicial){ super(nome, cpf); valorContaCorrente = valorInicial; valorDaDivida = 0; }
Lucas
Post mais votado
13/06/2020
O programa está compilando, porém, mesmo eu mudando o número de cpf, deixando igual de dois clientes ele ainda adiciona, mas não deveria acontecer isso.
Instanciei os clientes do meu arranjo no método main.
Classe Gerente
public class Gerente extends Pessoa implements InterfaceGerente{ private static final String tipo = "G"; private Cliente[] clientes; private int numClientes; private int valorContaCorrente; private int valorDaDivida; Gerente(String nome, int cpf){ super(nome, cpf); clientes = new Cliente[20]; numClientes = 0; } String retornaTipo() { return tipo; } void imprimirClientes(){ Cliente atual; System.out.println("\\tNumero de clientes: " + numClientes); for (int c=0; c < numClientes; c++){ atual = clientes[c]; System.out.println("\\t" + (c+1) + "\\t" + atual.retornaTipo() + "\\t" + atual.nome + "\\t" + atual.cpf + "\\t" + atual.getValorContaCorrente() + "\\t" + atual.getValorDaDivida() + "\\t" + atual.negativado()); } } public boolean adicionarCliente(Cliente cliente) { if ( this.numClientes == 20) { return false; } for ( int j=0; j < numClientes; j++) { // Perorrer o arranjo. if ( this.clientes[j].cpf == cliente.cpf ) { return false; } } for(int k=0; k < numClientes; k++) { if( this.clientes[k].cpf != cliente.cpf) { clientes[numClientes] = cliente; numClientes += 1; return true; } } return true; } public static void main(String[] args){ Cliente c1 = new Cliente("Cliente A", 27855, 10000); Cliente c2 = new Cliente("Cliente B", 24564, 10000); Cliente c3 = new Cliente("Cliente C", 27444, 10000); Cliente c4 = new Cliente("Cliente D", 2222, 10000); Cliente c5 = new Cliente("Cliente E", 2222, 10000); Cliente c6 = new Cliente("Cliente F", 2222, 10000); Cliente c7 = new Cliente("Cliente G", 2222, 10000); Cliente c8 = new Cliente("Cliente H", 2222, 10000); Cliente c9 = new Cliente("Cliente I", 2222, 10000); Cliente c10 = new Cliente("Cliente J", 2232, 10000); Cliente c11 = new Cliente("Cliente K", 2222, 10000); Cliente c12 = new Cliente("Cliente L", 2222, 10000); Cliente c13 = new Cliente("Cliente M", 2222, 10000); Cliente c14 = new Cliente("Cliente N", 2222, 10000); Cliente c15 = new Cliente("Cliente O", 2222, 10000); Cliente c16 = new Cliente("Cliente P", 2222, 10000); Cliente c17 = new Cliente("Cliente Q", 2222, 10000); Cliente c18 = new Cliente("Cliente R", 2222, 10000); Cliente c19 = new Cliente("Cliente S", 2222, 10000); Cliente c20 = new Cliente("Cliente T", 2222, 10000); if (ger1.adicionarCliente(c1)) System.out.println("Cliente ''" +c1.nome + "'' adicionado corretamente."); else System.out.println("Cliente ''" + c1.nome + "'' nao pode ser adicionado."); } }
Classe Cliente
Cliente(String nome, int cpf, int valorInicial){ super(nome, cpf); valorContaCorrente = valorInicial; valorDaDivida = 0; }
Fala Lucas, beleza?
cara, mas em que parte do seu programa você está incluindo o restante dos clientes? na sua função main() pelo que percebi você está incluindo somente o c1.
Ricardo Arraes
Mais Posts
13/06/2020
Lucas
Fala Lucas, beleza?
cara, mas em que parte do seu programa você está incluindo o restante dos clientes? na sua função main() pelo que percebi você está incluindo somente o c1.
Tô bem sim Ricardo, obrigado por me responder rs, o senhor é incrivel.
Testo nesse método ExecutaBanco, eu tava fazendo uns testes na classe gerente ai não consegui copiar o restante do código.
Obter empréstimo, Realizar Saque, Pagar empréstimo, Negativado e Cobrar todos os Empréstimos estão funcionando corretamente.
Apenas esse adicionar cliente e gerente que deveria funcionar, mas não está indo.
Ele tinha que usar o cpf como um código para distinguir uma pessoa da outra, pq se eu adicionar a primeira pessoa ela vai ter um código, ai quando eu adicionar a segunda pessoa ela vai ter outro código diferente e ser adicionado normalmente e meu arranjo precisa ter 2 posições ocupadas já, como eu coloquei ali clientes[numClientes] = cliente; depois se o terceiro cliente q eu tentar adicionar tiver um código igual o primeiro ele não pode adicionar o terceiro.
public class ExecutaBanco {
public static void main(String[] args){
System.out.println("*** Instanciando Clientes **************************************");
Cliente c1 = new Cliente("Cliente A", 222222226, 10000);// Nome, CPF, Valor DA CONTA CORRENTE.
Cliente c2 = new ClienteEspecial("Cliente B", 333336760, 2000);
Cliente c3 = new Cliente("Cliente C", 44444, 30000);
Cliente c4 = new Cliente("Cliente D", 44444, 10);
System.out.println("*** Instanciando Gerentes **************************************");
Gerente ger1 = new Gerente("Gerente 1", 12345); //Nome e CPF.
Gerente ger2 = new Gerente("Gerente 2", 12121);
System.out.println("*** Instanciando um Banco **************************************");
Banco meuBanco = new Banco();
System.out.println("*** Adicionando Clientes ao Gerente 1 **************************");
if (ger1.adicionarCliente(c1)) System.out.println("Cliente '" +c1.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c1.nome + "' nao pode ser adicionado.");
if (ger1.adicionarCliente(c2)) System.out.println("Cliente '" +c2.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c2.nome + "' nao pode ser adicionado.");
if (ger1.adicionarCliente(c2)) System.out.println("Cliente '" +c2.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c2.nome + "' nao pode ser adicionado.");
if (ger1.adicionarCliente(c3)) System.out.println("Cliente '" + c3.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c3.nome + "' nao pode ser adicionado.");
System.out.println("*** Adicionando Clientes ao Gerente 2 **************************");
if (ger2.adicionarCliente(c3)) System.out.println("Cliente '" + c3.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c3.nome + "' nao pode ser adicionado.");
if (ger2.adicionarCliente(c4)) System.out.println("Cliente '" + c4.nome + "' adicionado corretamente.");
else System.out.println("Cliente '" + c4.nome + "' nao pode ser adicionado.");
System.out.println("*** Adicionando Gerentes ao Banco ******************************");
meuBanco.adicionarGerente(ger1);
meuBanco.adicionarGerente(ger2);
meuBanco.imprimir();
System.out.println("*** Testando o metodo obterEmprestimo **************************");
if (c4.obterEmprestimo(20000)) System.out.println("Cliente '" + c4.nome + "' obteve o emprestimo solicitado.");
else System.out.println("Cliente '" + c4.nome + "' nao obteve o emprestimo solicitado.");
if (c4.obterEmprestimo(20000)) System.out.println("Cliente '" + c4.nome + "' obteve o emprestimo solicitado.");
else System.out.println("Cliente '" + c4.nome + "' nao obteve o emprestimo solicitado.");
if (c2.obterEmprestimo(60000)) System.out.println("Cliente '" + c2.nome + "' obteve o emprestimo solicitado.");
else System.out.println("Cliente '" + c2.nome + "' nao obteve o emprestimo solicitado.");
if (c2.obterEmprestimo(20000)) System.out.println("Cliente '" + c2.nome + "' obteve o emprestimo solicitado.");
else System.out.println("Cliente '" + c2.nome + "' nao obteve o emprestimo solicitado.");
meuBanco.imprimir();
System.out.println("*** Testando o metodo realizarSaque ****************************");
if (c2.realizarSaque(12345)) System.out.println("Cliente '" + c2.nome + "' realizou saque solicitado.");
else System.out.println("Cliente '" + c2.nome + "' nao pode realizar o saque solicitado.");
if (c2.realizarSaque(12345)) System.out.println("Cliente '" + c2.nome + "' realizou saque solicitado.");
else System.out.println("Cliente '" + c2.nome + "' nao pode realizar o saque solicitado.");
if (c1.realizarSaque(10000)) System.out.println("Cliente '" + c1.nome + "' realizou saque solicitado.");
else System.out.println("Cliente '" + c1.nome + "' nao pode realizar o saque solicitado.");
if (c1.realizarSaque(1)) System.out.println("Cliente '" + c1.nome + "' realizou saque solicitado.");
else System.out.println("Cliente '" + c1.nome + "' nao pode realizar o saque solicitado.");
meuBanco.imprimir();
System.out.println("*** Testando o metodo pagarEmprestimo **************************");
if (c1.pagarEmprestimo(100)) System.out.println("Cliente '" + c1.nome + "' pagou (parte de) sua divida.");
else System.out.println("Cliente '" + c1.nome + "' nao pode pagar (parte de) sua divida.");
if (c2.pagarEmprestimo(100)) System.out.println("Cliente '" + c2.nome + "' pagou (parte de) sua divida.");
else System.out.println("Cliente '" + c2.nome + "' nao pode pagar (parte de) sua divida.");
if (c3.pagarEmprestimo(100)) System.out.println("Cliente '" + c3.nome + "' pagou (parte de) sua divida.");
else System.out.println("Cliente '" + c3.nome + "' nao pode pagar (parte de) sua divida.");
if (c4.pagarEmprestimo(100)) System.out.println("Cliente '" + c4.nome + "' pagou (parte de) sua divida.");
else System.out.println("Cliente '" + c4.nome + "' nao pode pagar (parte de) sua divida.");
meuBanco.imprimir();
System.out.println("*** Testando o metodo cobrarTodosEmprestimos *******************");
ger1.cobrarTodosEmprestimos();
meuBanco.imprimir();
ger2.cobrarTodosEmprestimos();
meuBanco.imprimir();
}
}
13/06/2020
Lucas
Fala Lucas, beleza?
cara, mas em que parte do seu programa você está incluindo o restante dos clientes? na sua função main() pelo que percebi você está incluindo somente o c1.
Acabei esquecendo de editar.
public class ExecutaBanco { public static void main(String[] args){ System.out.println("*** Instanciando Clientes **************************************"); Cliente c1 = new Cliente("Cliente A", 222222226, 10000);// Nome, CPF, Valor DA CONTA CORRENTE. Cliente c2 = new ClienteEspecial("Cliente B", 333336760, 2000); Cliente c3 = new Cliente("Cliente C", 44444, 30000); Cliente c4 = new Cliente("Cliente D", 44444, 10); System.out.println("*** Instanciando Gerentes **************************************"); Gerente ger1 = new Gerente("Gerente 1", 12345); //Nome e CPF. Gerente ger2 = new Gerente("Gerente 2", 12121); System.out.println("*** Instanciando um Banco **************************************"); Banco meuBanco = new Banco(); System.out.println("*** Adicionando Clientes ao Gerente 1 **************************"); if (ger1.adicionarCliente(c1)) System.out.println("Cliente '" +c1.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c1.nome + "' nao pode ser adicionado."); if (ger1.adicionarCliente(c2)) System.out.println("Cliente '" +c2.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c2.nome + "' nao pode ser adicionado."); if (ger1.adicionarCliente(c2)) System.out.println("Cliente '" +c2.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c2.nome + "' nao pode ser adicionado."); if (ger1.adicionarCliente(c3)) System.out.println("Cliente '" + c3.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c3.nome + "' nao pode ser adicionado."); System.out.println("*** Adicionando Clientes ao Gerente 2 **************************"); if (ger2.adicionarCliente(c3)) System.out.println("Cliente '" + c3.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c3.nome + "' nao pode ser adicionado."); if (ger2.adicionarCliente(c4)) System.out.println("Cliente '" + c4.nome + "' adicionado corretamente."); else System.out.println("Cliente '" + c4.nome + "' nao pode ser adicionado."); System.out.println("*** Adicionando Gerentes ao Banco ******************************"); meuBanco.adicionarGerente(ger1); meuBanco.adicionarGerente(ger2); meuBanco.imprimir(); System.out.println("*** Testando o metodo obterEmprestimo **************************"); if (c4.obterEmprestimo(20000)) System.out.println("Cliente '" + c4.nome + "' obteve o emprestimo solicitado."); else System.out.println("Cliente '" + c4.nome + "' nao obteve o emprestimo solicitado."); if (c4.obterEmprestimo(20000)) System.out.println("Cliente '" + c4.nome + "' obteve o emprestimo solicitado."); else System.out.println("Cliente '" + c4.nome + "' nao obteve o emprestimo solicitado."); if (c2.obterEmprestimo(60000)) System.out.println("Cliente '" + c2.nome + "' obteve o emprestimo solicitado."); else System.out.println("Cliente '" + c2.nome + "' nao obteve o emprestimo solicitado."); if (c2.obterEmprestimo(20000)) System.out.println("Cliente '" + c2.nome + "' obteve o emprestimo solicitado."); else System.out.println("Cliente '" + c2.nome + "' nao obteve o emprestimo solicitado."); meuBanco.imprimir(); System.out.println("*** Testando o metodo realizarSaque ****************************"); if (c2.realizarSaque(12345)) System.out.println("Cliente '" + c2.nome + "' realizou saque solicitado."); else System.out.println("Cliente '" + c2.nome + "' nao pode realizar o saque solicitado."); if (c2.realizarSaque(12345)) System.out.println("Cliente '" + c2.nome + "' realizou saque solicitado."); else System.out.println("Cliente '" + c2.nome + "' nao pode realizar o saque solicitado."); if (c1.realizarSaque(10000)) System.out.println("Cliente '" + c1.nome + "' realizou saque solicitado."); else System.out.println("Cliente '" + c1.nome + "' nao pode realizar o saque solicitado."); if (c1.realizarSaque(1)) System.out.println("Cliente '" + c1.nome + "' realizou saque solicitado."); else System.out.println("Cliente '" + c1.nome + "' nao pode realizar o saque solicitado."); meuBanco.imprimir(); System.out.println("*** Testando o metodo pagarEmprestimo **************************"); if (c1.pagarEmprestimo(100)) System.out.println("Cliente '" + c1.nome + "' pagou (parte de) sua divida."); else System.out.println("Cliente '" + c1.nome + "' nao pode pagar (parte de) sua divida."); if (c2.pagarEmprestimo(100)) System.out.println("Cliente '" + c2.nome + "' pagou (parte de) sua divida."); else System.out.println("Cliente '" + c2.nome + "' nao pode pagar (parte de) sua divida."); if (c3.pagarEmprestimo(100)) System.out.println("Cliente '" + c3.nome + "' pagou (parte de) sua divida."); else System.out.println("Cliente '" + c3.nome + "' nao pode pagar (parte de) sua divida."); if (c4.pagarEmprestimo(100)) System.out.println("Cliente '" + c4.nome + "' pagou (parte de) sua divida."); else System.out.println("Cliente '" + c4.nome + "' nao pode pagar (parte de) sua divida."); meuBanco.imprimir(); System.out.println("*** Testando o metodo cobrarTodosEmprestimos *******************"); ger1.cobrarTodosEmprestimos(); meuBanco.imprimir(); ger2.cobrarTodosEmprestimos(); meuBanco.imprimir(); } }