Começei a fazer programinhas ontem, antes eu so lia e estou acompanhando uma apostila mas não estou copiando de lá estou tentando ser o mais independente possível, então ai vai:
Estou com este código e já da pra perceber o que eu quero... Queria que pedisse pra digitar o nome, e comparace com os nomes que tenho e se achasse um = pegasse os dados do mesmo e colocasse na tela, acho que estou muito limitado deve ter que fazer algo que n li ainda mas não parece complexo, se alguém puder me dar uma dica.
Eu já programei em ActionScript e sempre fui assim, mesmo não sabendo muito no sentido de conhecimentos da linguagem eu me virava com o que sabia :wink:
importjavax.swing.JOptionPane;classConta{Stringnome;StringQuem;doublesaldo;doublelimite;doubletotalconta;voidsaca(doublequantidade){doublenovoSaldo=this.saldo-quantidade;this.saldo=novoSaldo;}voiddeposito(doublequantidade){this.saldo=saldo+quantidade;}voidpreferencial(doubleespelhosaldo){espelhosaldo=3000.0;if(saldo>espelhosaldo&Quem==nome){System.out.println("Cliente preferencial");System.out.println("");}}voiddados(intc){if(Quem==nome){System.out.println("Sr."+nome);System.out.println("seu saldo atual é de R$"+saldo);System.out.println("seu saldo com limite é de R$"+totalconta);}else{System.out.println("Você não possui uma conta");}}}publicclassTeste{publicstaticvoidmain(String[]args){StringQuem=JOptionPane.showInputDialog("Digite seu nome:");ContaminhaConta1=newConta();minhaConta1.dados(0);minhaConta1.nome="Thiago";minhaConta1.saldo=2000.0;minhaConta1.saca(200);minhaConta1.limite=0;minhaConta1.totalconta=minhaConta1.saldo+minhaConta1.limite;minhaConta1.preferencial(0);ContaminhaConta2=newConta();minhaConta2.dados(0);minhaConta2.nome="João";minhaConta2.saldo=5000.0;minhaConta2.deposito(1000.0);minhaConta2.limite=2500.0;minhaConta2.totalconta=minhaConta2.saldo+minhaConta2.limite;minhaConta2.preferencial(0);ContaminhaConta3=newConta();minhaConta3.dados(0);minhaConta3.nome="Pedro";minhaConta3.saldo=2000.0;minhaConta3.limite=1000.0;minhaConta3.totalconta=minhaConta3.saldo+minhaConta3.limite;minhaConta3.preferencial(0);}}
OBS: Se alguém quiser opiniar quanto a estrutura de como estou fazendo e me ajudar também a mudar algumas coisas que ficariam mais organizadas...
Eu até pensei assim, mas queria algo que procure sozinho, sem que eu precise saber os nomes e fazer essas condições.
Andre_Brito
Oi amico.
Você deve ter uma lista de nomes, certo? Se a resposta for “sim”, você deve fazer um for-each pro nome digitado.
privateArrayList<Conta>lista=newArrayList<Conta>();// aqui eu criei uma coleção de contas chamada lista.privateStringnome;// esse eh o nome que vai ser procuradoprivateScannerleitor=newScanner(System.in);// Adicionando contasContaconta=newConta(...);// agora, voce coloca todos os atributos e tal, como nome e coisarada.lista.add(conta);// adiciona na sua lista a conta criada// Agora vamos procurar pela conta, a partir do nome que o usuario inseriunome=leitor.nextLine();// li o nome do carafor(Contacontas:lista){// for each. Quer dizer o seguinte: para cada conta que existir na lista, façaif(contas.getNome().equals(nome)){// se o nome daquela pessoa for igual ao nome que o usuario digitou pra ver se existeSystem.out.println("ACHOU! Existe um nome igual.");// fala que existebreak;// acaba com o for}}System.out.println("Não achou nenhum igual");
Acho que tem alguma coisa errada no meu código, pois mesmo encontrando e saindo do for, vai dizer que não encontrou. O que você poderia fazer é criar um contador valendo 0 e incrementar ele se ele achar. Fora do for, você faz um if (contador == 0)System.out.println(“num axo”). Obviamente o contador deve ser do tipo int (primitivo e não Integer).
Ps.: Você programa em AS? Nossa… sinceramente tenho atração pela linguagem
Abraço.
Marky.Vasconcelos
Ou então ter um HashMap<String, Pessoa>
A unica coisa que você ia precisar fazer para procurar é algo assim
Bom dia, obrigado pelas respostas, mas como eu disse estou começando agora com Java, não estou conseguindo resolver, se vocês pudessem mostrar como devo encaixar no meu código ficaria muito grato
No seu caso vai usar um HashMap<String,Pessoa> mas da uma lida e ve se entende.
francislon
Faz assim, você vai mudar seus métodos:
1 - preferencial(), veja que nele você recebe um parametro mas nao usa ele para nada. Logo tire o parametro, e crie uma constante na sua classe para indicar qual é o espelhoSaldo que vai determinar se o cliente é preferencial ou não.
2 - dados(), aqui acontece o mesmo problema que aconteceu com o “preferencial()”, você recebe parametro mas nao usa seu valor para nada, logo você nao precisa receber este parametro. E a comparacao dos nomes ficaria assim mesmo:
if(quem.equals(nome)) {
System.out.println("Sr." +nome);
System.out.println("seu saldo atual é de R$" +saldo);
System.out.println("seu saldo com limite é de R$" +totalconta);
} else {
System.out.println("Você não possui uma conta");
}
Abraço.
Andre_Brito
Você pode ser iniciante, mas estude Collections o quanto antes para não reinventar a roda
Em C eu sempre tive que fazer Listas, Pilhas e Filas… você não tem idéia do tempo que perdi fazendo… hoje tenho tudo pronto, graças.
HashMap é uma boa pedida mesmo… na verdade, acho que é até melhor que o que eu falei, porque pode usar o keySet() pra achar o cara.
Boa Mark.
Abraço.
Kassiane_Pretti
Vc poderia utilizar um LinkedList para armazenar os clientes, e depois poderia fazer a consulta entre os clientes cadastrados…
E troque o == por quem.equalsIgnoreCase(nome), assim fica melhor. Também evite de colocar variaveis com a primeira letra maiuscula…
Espero ter ajudado
M
malstryx
Salve, vlw a todos mesmo, não estou conseguindo usando if(quem.equals(nome)), então acho melhor da uma lida no tutorial que o Mark passou, e depois tentar novamente pois parece ser o jeito mais correto. Qualquer dúvida sobre o assunto postarei aqui, vlw a todos msm e bom feriado (paulistas)
Abçs.
Andre_Brito
Dá algum erro quando você compara o com o equals()?