Acho que o título não ficou muito claro, hehehe…então vou tentar explicar melhor.
Estou criando uma agenda e nela tenho a opção de buscar registro por nome ou sobrenome. Minha dúvida é: tem como buscar uma String depois do espaço na mesma variável? Ou terei que criar a variável Nome e Sobrenome para fazer a busca?
Aproveitando o tópico, estou com outro problema na leitura de variáveis.
Usando o SCANNER, estou utilizando a seguinte maneira para ler uma String:
System.out.print("Digite o nome:");
a1.setNome(sc.next());
Estava usando o nextLine(), porém ele estava pulando direto para outra instrução do código e colocando vazio na variável nome…mudei para o next(), mas o next parece que lê apenas o primeiro grupo de String (ignora tudo depois do espaço).
Alguém sabe como resolver este problema do nextLine() ?
Com isso você tem um array de duas posições com o primeiro e o segundo nome, porém não sei se é o mais sensato fazer isso, imagine uma situação que você tenha um nome duplo ou dois sobrenomes, por exemplo: “Seu Nome E Sobrenome” então seu array teria 4 posições, em qual você faria a comparação?
Com isso você tem um array de duas posições com o primeiro e o segundo nome, porém não sei se é o mais sensato fazer isso, imagine uma situação que você tenha um nome duplo ou dois sobrenomes, por exemplo: “Seu Nome E Sobrenome” então seu array teria 4 posições, em qual você faria a comparação?[/quote]
Verdade…não podemos saber quantos sobrenomes a pessoa terá.
Talvez seja mais prático usar o que o Vmaia falou…o String.contains(“string”)…porque assim posso escrever “Digite o nome e/ou Sobrenome” que faria uma busca em tudo.
Ahhhh, mas ainda estou com o problema do NEXTLINE(), sabem como resolver? Porque o nextLine imprime “Digite o nome” mas já coloca vazio na variável e vai direto pra “Digite o telefone:”
ArrayList agenda = new ArrayList();
Scanner sc = new Scanner(System.in);
private String nome;
private int telefone,registro=1;
public void setNome(String nome){
this.nome=nome;
}
public String getNome(){
return nome;
}
public void setTelefone(int telefone){
this.telefone=telefone;
}
public Integer getTelefone(){
return telefone;
}
public void setRegistro(int registro){
this.registro=registro;
}
public Integer getRegistro(){
return registro;
}
public void adicionar(){
Agenda a1 = new Agenda();
a1.setRegistro(registro++);
System.out.print("Digite o nome:");
a1.setNome(sc.next());
System.out.print("Digite o telefone:");
a1.setTelefone(sc.nextInt());
agenda.add(a1);
}
public void buscar(){
int opcao=0,searchPhone;
String nameSearch;
System.out.println("Digite 1 para pesquisar pelo o nome ou 2 para pesquisar pelo telefone: ");
opcao=sc.nextInt();
for(Agenda x: agenda){
if(opcao==1){
System.out.println("Digite o nome que deseja buscar: ");
nameSearch=sc.next();
if(nameSearch.equalsIgnoreCase(x.getNome())){
System.out.println("Registro: "+x.getRegistro()+" Nome: "+x.getNome()+" Telefone: "+x.getTelefone());
}
else {
System.out.println("Nome não existe!");
}
}
if(opcao==2){
System.out.println("Digite o número do telefone que deseja buscar: ");
searchPhone=sc.nextInt();
if(searchPhone==x.getTelefone()){
System.out.println("Registro: "+x.getRegistro()+" Nome: "+x.getNome()+" Telefone: "+x.getTelefone());
}
else{
System.out.println("Número não encontrado!");
}
}
}
eu uso o comando “trim()” já é da propria classe string, ele serve para tirar os espaços em branco de antes e depois da string.
ex:
String nomeDaVariavel = " nome ";
nomeDaVariavel.trim();
ficaria
nomeDaVariavel == “nome”;