Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cindy Lima

Não consigo fazer busca em java-Eis o código

Recommended Posts

import javax.swing.JOptionPane;



public class Exercicio {


public static void main(String[] args) {

String vet1[]= new String [5];

boolean achou=true;


for(int i=0;i<vet1.length;i++){

vet1=JOptionPane.showInputDialog("Nome:");


}


for(int i=0;i<vet1.length;i++)

{

System.out.println(vet1);

}


String nm=JOptionPane.showInputDialog("Qual nome você deseja pesquisar:");

for(int i=0;i<vet1.length;i++){

if(nm.equals(vet1)==true){


JOptionPane.showMessageDialog( null,"Pesquisa Realizada com Sucesso!");


}


else if(nm.equals(vet1)==false) {


JOptionPane.showMessageDialog( null, "Nome não encontrado!");

break;

}

break;

}






}

}


Compartilhar este post


Link para o post
Compartilhar em outros sites

oi.. aparentemente, o código está ok.. compilei, está rodando..

agora explique melhor onde vc quer fazer a busca..

seria num banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O programa roda normalmente, o problema é que ele sempre exibe a mensagem de "Nome não encontrado" mesmo que exista o nome no array. Se indentarmos o código, facilmente encontramos onde está o problema:

for(int i=0; i<vet1.length; i++){
    if(nm.equals(vet1[i])==true)
        JOptionPane.showMessageDialog( null,"Pesquisa Realizada com Sucesso!");
    else if(nm.equals(vet1[i])==false) {
        JOptionPane.showMessageDialog( null, "Nome não encontrado!");
        break; // o que esse BREAK está fazendo aqui!!??
    }
    break;
}

Veja isto:

else if(nm.equals(vet1[i])==false) {
   JOptionPane.showMessageDialog( null, "Nome não encontrado!");
   break; // o que esse BREAK está fazendo aqui!!??
}

Ele mostrará uma mensagem que o nome não foi encontrado e irá quebrar o loop (mesmo sem passar por todos os nomes). Explicando de outra forma: Tendo a seguinte lista de nomes:

 

vet1 = [ joao, pedro, maria, marta, carla ]

Se eu pesquisar por "joao", o programa irá mostrar a seguinte mensagem: "Pesquisa Realizada com Sucesso!".

Usando o mesmo vetor, se eu pesquisar por "carla" o programa irá exibir: "Nome não encontrado!", mesmo ele estando no vetor.

 

Ao invés de exibir as mensagens dentro no laço, use a variável "achou" (que você declarou e não usou) para armazenar true ou false se existe o nome no vetor. NO FINAL, se for true, mostre a mensagem que a pesquisa foi concluída com sucesso, do contrário mostre a que o nome não existe no vetor.

 

Uma forma de resolver:

import javax.swing.JOptionPane;

public class Main {
    private static final String []array = new String[5];
    
    public static void main(String args[]) {
        for (int i = 0; i < array.length; i++)
            array[i] = JOptionPane.showInputDialog((i + 1) + " nome: ");
            
        String temp = JOptionPane.showInputDialog("Nome a ser pesquisado: ");
        
        boolean success = false;
        for (String str : array)
            if (temp.equals(str))
                success = true;
            
        if (!success)
            JOptionPane.showMessageDialog(null, "Nome não Encontrado!");
        else
            JOptionPane.showMessageDialog(null, "Nome Encontrado");
    }
}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método equals() já retorna um booleano, então;

if(nm.equals(vet1)==true)

como vc fez ficaria melhor assim;

if( nm.equals(vet1) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.