Dúvida: Buscar string depois de espaço numa lista

6 respostas
R

Bom dia pessoal!

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() ?

Valeu galera!

Abraços!

6 Respostas

M

da pra fazer usando o split da string.

algo assim:

String nomeCompleto = "Seu Nome"; String splited[] = nomeCompleto.split(" ");

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?

Vmaia

Olá, você não poderia usar String.contains(“string”).

"abcd yx zy".contains("yx");
R

markin1:
da pra fazer usando o split da string.

algo assim:

String nomeCompleto = "Seu Nome"; String splited[] = nomeCompleto.split(" ");

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?

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:”

Vmaia

Posta a classe para entendermos o código.

R
Vmaia:
Posta a classe para entendermos o código.

A classe é a seguinte:

import java.util.ArrayList;
import java.util.Scanner;
/**
 *
 * @author Rizller
 */
public class Agenda {
    
    ArrayList<Agenda> agenda = new ArrayList<Agenda>();
    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 exibir(){
        for(Agenda x: agenda){
            System.out.println("Registro: "+x.getRegistro()+"  Nome: "+x.getNome()+"  Telefone: "+x.getTelefone());
            
        }
    }

    public void remover(){
        int registroR;
        System.out.print("Digite o número do registro que deseja remover: ");
        registroR=sc.nextInt();

        for(Agenda x: agenda){
            if(registroR==x.registro){
                agenda.remove(x);
                System.out.println("Registro removido com sucesso!");
            }
        }

    }
    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!");
                }
            }

        }
        
    }
}
D
eu uso o comando trim()  é 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;

vlw

Criado 11 de junho de 2010
Ultima resposta 11 de jun. de 2010
Respostas 6
Participantes 4