Comparar Strings

Estou com uma duvida em relação a comparação equals. Quando vou comparar uma resposta em String que é composta, ele considera como se fosse duas respostas, qual comando eu uso para ele ignorar o espaço e comparar como uma só.

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

    String [] estados  = new String [10];
    String [] capitais = new String [10];
    
    String resp;
    
    estados [0] = "Acre";
  
    
    capitais [0] = "Rio Branco";
   
    
    for (int i = 0; i < 9; i++) {
      
        System.out.println("Fale qual é a capital desse estado : " 
            + estados[i]); 
        resp = teclado.next();
        
        if (resp.equalsIgnoreCase(capitais[i])) {
            System.out.println("Parabens você acertou");
        }else
            System.out.println("A resposta certa é : " + capitais[i]);

Fale qual é a capital desse estado : Acre
Rio Branco
A resposta certa é : Rio Branco

bom vc pode usar o comando replace para remover o espaço ex:

String nome = "Rio Branco";
        //troca o espaço por nada.
        String semEspaco = nome.replace(" ", "");
        System.out.println("Sem espaço: " + semEspaco);
        
        //coloca todas as letras minusculas.
        String minusculas = semEspaco.toLowerCase();
        System.out.println("Letras pequenas: " + minusculas);

A saída vai ser:

Sem espaço: RioBranco
Letras pequenas: riobranco

recomendo utilizar o método toLowerCase q deixa tudo minúsculo, assim independente de o usuario escreve com alguma letra maiuscula ou minuscula a resposta ficaria certa.

Obs:[quote=“Bernal, post:1, topic:350537”]
resp = teclado.next();
[/quote]

o método next() só pega o nome inicial, exemplo se tu digitar no console Rio Branco, ele só pega Rio, então vc deve trocar pelo método nextLine() que pega toda a linha digitada.

resp = teclado.nextLine();
2 curtidas

Como o amigo disse acima, vc pode usar o método replace(), mas o replace() serve para trocar pedaços de uma String por outro… Existe um método q foi criado só para remover todos os espaços de uma String, chama trim()

basta apenas incrementar no seu if:

  if (resp.trim().equalsIgnoreCase(capitais[i].trim())) 
     S.o.p ("Acertou xD");

recomendo q incremente o método toLowerCase() nos dois tbm
Abraço

2 curtidas

+1

1 curtida

Isso mesmo amigo, mas só uma observação para o colega que está com dúvida, no caso o trim() não remove “Todos” os espaços dentro de uma string, ele remove somente os espaços no inicio e fim de uma String.
Aí se vc precisar remover os espaços de inicio e fim e também entre as palavras, combina o trim() com replace()

2 curtidas

Eu testei aqui , deu certo. Muito obrigado