Foto de Paulo G.
Paulo há 3 anos
Enviada pelo
Site

Busca em vetor do tipo string

Estou tentando fazer um programa que procure se a palavra fornecida pelo usuário está presente no vetor e imprima a mesma na tela com sua tradução em inglês (em outro vetor) e vice-versa. Mas no pedaço que grifei, está indo direto pro "Não encontrado" porque o "i" é igual a todas a palavras do vetor e não sei o porquê :(

import java.util.Arrays;

public class main {

public static void main(String args[]) {
 
   Scanner in = new Scanner(System.in);

   String a;
   String [] vetor_pt = {"cachorro", "gato", "agua"};
   String [] vetor_en = {"dog", "cat", "water"};
   
   System.out.println(Arrays.deepToString(vetor_pt));
   System.out.println(Arrays.deepToString(vetor_en));
   
   System.out.println("Que palavra você quer buscar?");
   a = in.next();
   
   // ERRO: ELE PULA DIRETO PRO "NÃO ENCONTRADO" PORQUE "i = TODAS AS PALAVRAS DO VETOR"
   
    for (int i = 0; i < vetor_pt.length-1; i++) {
     if (vetor_pt[i] == a) {
     System.out.println("Português: "+vetor_pt[i]+" Inglês: "+vetor_en[i]);
     } else if (vetor_en[i] == a) {
     System.out.println("Inglês: "+vetor_en[i]+" Português: "+vetor_pt[i]);
     } else System.out.println("Não encontrado!");
   
    }
}
}

Professor Elias S.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 3 anos
Contatar Elias

Oi, ao invés de usar o operador == para comparar strings, deve-se usar o método .equals().

Isto porque, no Java, x == y verifica se x e y se referem ao mesmo objeto na memória, mas a chamada a = in.next(); sempre cria uma nova string, mesmo quando o texto é idêntico à alguma string que você já tenha no vetor_pt ou vetor_en!

Daí, para verificar se duas strings possuem o mesmo texto dentro delas, usa-se x.equals(y).

O trecho corrigido fica assim:

    for (int i = 0; i < vetor_pt.length-1; i++) {
     if (vetor_pt[i].equals(a)) {
     System.out.println("Português: "+vetor_pt[i]+" Inglês: "+vetor_en[i]);
     } else if (vetor_en[i].equals(a)) {
     System.out.println("Inglês: "+vetor_en[i]+" Português: "+vetor_pt[i]);
     } else System.out.println("Não encontrado!");

 

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Tire dúvidas com IA
Resposta na hora da Minerva IA
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa