Foto de Paulo G.
Paulo há 2 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á 2 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
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor