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
[code]import javax.swing.JOptionPane;
class Conta {
String nome;
String Quem;
double saldo;
double limite;
double totalconta;
void saca (double quantidade) {
double novoSaldo = this.saldo - quantidade;
this.saldo = novoSaldo;
}
void deposito(double quantidade) {
this.saldo = saldo + quantidade;
}
void preferencial (double espelhosaldo) {
espelhosaldo = 3000.0;
if (saldo>espelhosaldo & Quem == nome) {
System.out.println("Cliente preferencial");
System.out.println("");
}
}
void dados (int c) {
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");
}
}
}
public class Teste {
public static void main(String[] args) {
String Quem = JOptionPane.showInputDialog("Digite seu nome:");
Conta minhaConta1 = new Conta();
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);
Conta minhaConta2 = new Conta();
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);
Conta minhaConta3 = new Conta();
minhaConta3.dados(0);
minhaConta3.nome = "Pedro";
minhaConta3.saldo = 2000.0;
minhaConta3.limite = 1000.0;
minhaConta3.totalconta = minhaConta3.saldo + minhaConta3.limite;
minhaConta3.preferencial(0);
}
}
[/code]
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…
Você deve ter uma lista de nomes, certo? Se a resposta for “sim”, você deve fazer um for-each pro nome digitado.
private ArrayList<Conta> lista = new ArrayList<Conta>(); // aqui eu criei uma coleção de contas chamada lista.
private String nome; // esse eh o nome que vai ser procurado
private Scanner leitor = new Scanner(System.in);
// Adicionando contas
Conta conta = new Conta(...); // 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 inseriu
nome = leitor.nextLine(); // li o nome do cara
for (Conta contas: lista) { // for each. Quer dizer o seguinte: para cada conta que existir na lista, faça
if (contas.getNome().equals(nome)) { // se o nome daquela pessoa for igual ao nome que o usuario digitou pra ver se existe
System.out.println("ACHOU! Existe um nome igual."); // fala que existe
break; // 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
Ou então ter um HashMap<String, Pessoa>
A unica coisa que você ia precisar fazer para procurar é algo assim
if(myMap.contains("String digitada"){
//Tem no HashMap
Pessoa pessoa = myMap.get("String digitada");
//Faz oque quiser com a pessoa;
}else{
//Não tem no mapa, se quiser adicione ela
}
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
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");
}
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.
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)