Comparação de String

6 respostas
O

Quero saber qual opção o usuário escolheu A ou B.

if (opcao.equals("a")) {
}
if (opcao.equals("b")) {
}

Daí se o usuário escolher uma opção inválida (nem a, nem b) como eu faço?
Não sei como comparar diferente com String.

6 Respostas

ricardo.narezi

if (!opcao.equals("a") || !opcao.equals("b")) { }

isso deve funcionar…

doug

olá

É bem simples.

if ("a".equals(opcao)) {  
}else if ("b".equals(opcao)) {  
} else{
 //Caso nao for a ou b
}

ou desta forma

if ("a".equals(opcao)) {  
}else if ("b".equals(opcao)) {  
} else if (!"a".equals(opcao) || !"b".equals(opcao)){
 //Caso nao for a ou b
}

Tenho duas observações:

  1. Utilize sempre sua string de comparação.equals(sua variavel), isso evita de causar Exception;
  2. O operador ! (not), faz com que a expressão boolean seja invertida, por exemplo
    continua = true;
    syout(continua) // imprime true;
    sysout(!continua) // imprime false.
    Acho que deu para ter uma idéia.

Espero ter ajudado
Flwsss

ctdaa

Aqui um exemplinho mais elaborado para validar opções:

import java.util.ArrayList;

public class ValidaOpcoes {
    
    private static ArrayList<String> optionsMap = new ArrayList<String>(5);
    // constants
    private final static int NONE = -1;
    private final static int A = 0;
    private final static int B = 1;
    private final static int C = 2;

public static void main(String[] args) {

    String opc="a";  // para testar o exemplo    
    
    initializeOptions();
    switch (optionsMap.indexOf(opc)) {
	case A :
            System.out.println("Escolheu A");
            break;
	case B :
            System.out.println("Escolheu B");
            break;
	case C :
            System.out.println("Escolheu C");
            break;
	default:
            System.out.println("Opcao Invalida: " + opc);
            break;
    }
  }

  private static void initializeOptions() {
	optionsMap.add(0, "a");
	optionsMap.add(1, "b");
	optionsMap.add(2, "c");
	
  }
	
}
O

Deu certo, mas agora está com outro problema.
Quando o usuário digita uma opção inválida (nem a, nem b) aparece a msg do JOptionPane e eu dou ok, mas essa mensagem nao sai mais.
Em vez de voltar e pedir pro usuario digitar uma opção.
Alguém sabe como eu faço pra arrumar isso?

if (opcao.equals("a")) {   
}   
if (opcao.equals("b")) {   
}  

if(!opcao.equals("a")|| !opcao.equals("b")) {
				JOptionPane.showMessageDialog(null, "Opção inválida!!!");
				
			}
O

Ah…consegui aqui galera
Obrigado =))

Abraço

R

ou entao

if (!opcao.equalsIgnoreCase("a") || !opcao.equalsIgnoreCase("b")) {  
     //Se for
} else {
    //Se não for
}

Abraço

Criado 13 de novembro de 2009
Ultima resposta 13 de nov. de 2009
Respostas 6
Participantes 5