Criei um método para buscar um pessoa pelo seu cpf, mas quando digito o cpf para a busca ele da erro.Neste método eu tava testando pelo menos pro nome mas nao foi.
O método:
public void verDados(){
Pessoa p = new Pessoa();
String busca;
System.out.println("Digite o CPF para buscar: ");
busca = scan.nextLine();
for(qtdP=0; qtdP<100; qtdP++){
if(busca.equals(pessoas[qtdP].getNome())){
System.out.println("Nome: " +p.getNome());
}else if(qtdP == 100 - 1){
System.out.print("Pessoa nao encontrada!");
}
}
}
1 - Onde você obtém qtdP?
2 - Por que o else if?
Esse método está na classe Banco:
Se nao achar a pessoa ele imprime
import java.util.Scanner;
public class Banco{
Scanner scan = new Scanner(System.in);
private static int qtdP = 0;
private static int qtdC = 0;
private Conta contas[] = new Conta[100];
private Pessoa pessoas[] = new Pessoa[100];
public void addP(Pessoa c){
this.pessoas[qtdP] = c;
qtdP++;
}
public void verDados(){
Pessoa p = new Pessoa();
String busca;
System.out.println("Digite o CPF para buscar: ");
busca = scan.nextLine();
for(qtdP=0; qtdP<100; qtdP++){
if(busca.equals(pessoas[qtdP].getNome())){
System.out.println("Nome: " +p.getNome());
}else if(qtdP == 100 - 1){
System.out.print("Pessoa nao encontrada!");
}
}
}
}
Adlizm
Abril 1, 2018, 12:14am
#4
qtdP++
for(qtdP =0;qtdP<100;qtdP++)
Essa qtdP deve sera a quantidade de pessoas certo? então deveria não mudar a menos que que addP() seja chamada mas você ta alterando ela no for e no final qtdP vai valer 100 e se adicionar novamente uma pessoa pela addP() vai dar erro porque não vai ter this.pessoas[100]
tenta altera o for para
for(int i = 0; i < qtdP; i++) // dai vc ultiliza o " i "
e ve se funciona.
uma coisa que eu percebi é que vc está comparando 2 atributos diferentes.
System.out.println("Digite o CPF para buscar: ");
busca = scan.nextLine();
busca vai ter o valor do CPF
for(qtdP=0; qtdP<100; qtdP++){
if(busca.equals(pessoas[qtdP].getNome())){
aqui vc disse: se busca (que contém o CPF da pessoa) for igual a pessoas[qtdP].getNome()(que contém o nome da pessoa)
vc está comparando o valor obtido do CPF com o valor armazenado em nome da classe Pessoas e essa condição nunca será verdadeira
talvez vc esteja tentando fazer:
for(int i=0; i<pessoas.length; i++){
if(busca.equals(pessoas[i].getCPF())){
...
...
...
}
}
e visto que vc precisa que a quantidade de índices do vetor seja alterada em tempo de execução, talvez seja melhor usar um ArrayList
E diga qual erro exatamente está acontecendo para entendermos melhor