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

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!

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?

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

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

[quote=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?[/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:”

Posta a classe para entendermos o código.

A classe é a seguinte:

[code]import java.util.ArrayList;
import java.util.Scanner;
/**
*

  • @author Rizller
    */
    public class Agenda {

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

    }
    }[/code]

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

vlw