Busca em vetor do tipo string

Java Testes Básico

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

Foto de Paulo G.
Paulo perguntou há 2 anos

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
1 resposta
0
votos
Nenhum usuário votou nessa resposta como útil.
Professor Elias S.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos

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

 

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

Professores particulares de Java

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 60 / h
Elias S.
Natal / RN
Elias S.
4,3 (13 avaliações)
Horas de aulas particulares ministradas 10 horas de aula
Tarefas resolvidas 20 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
Java - Geral Java - grpc
Aprenda algoritmos e programação de um jeito descomplicado! Também ajudo com os trabalhos da universidade.
R$ 60 / h
César D.
Mogi Guaçu / SP
César D.
4,9 (805 avaliações)
Horas de aulas particulares ministradas 87 horas de aula
Tarefas resolvidas 983 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Programação Orientada a Objetos em Java Java - Geral
Graduação: Matemática Aplicada e Computacional (Universidade Estadual de Campinas (UNICAMP))
Faça aulas de matemática, computação e programação em c, c++, java e python.
R$ 75 / h
Marcos R.
Maceió / AL
Marcos R.
5,0 (1 avaliação)
Horas de aulas particulares ministradas 4 horas de aula
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Java EE (Enterprise Edition) Programação Funcional em Java Aplicações Java Orientadas a Serviço
MBA: Engenharia de Dados (IGTI)
Engenheiro de software com mais de 20 anos de experiência no ensino e desenvolvimento de software. Venha aprender de verdade!