Como posso faço para diferenciar Maiúscula de minuscula na escolha de um menu?

Java

27/05/2011

Olá, tenho a seguinte dúvida: tenho um menu que em vez de números eu uso letras, no caso eu defini letra maiúscula, mas quero também que o usuário use minusculas, por exemplo :
do{System.out.println("Escolha a opçao:");
         System.out.println("A - Faça isso:");
         System.out.println("B - Faça aquilo:");
         System.out.println("C - Sair:");
         resp1=sc.next();

         switch(resp1.charAt(0)){
             case 'A':
         menuA();
         break;
             case 'B':
         menuB();
         break;
             case 'C':
        System.exit(0);
Como devo proceder? posso usar if?
Helio Silva

Helio Silva

Curtidas 0

Respostas

Paulo Santana

Paulo Santana

27/05/2011

Ola heliopiracicaba. Eu estou postando um exemplo.

// Este exemplo mostra como comparar strings sem
// considerar letras maiúsculas e minúsculas

public class Estudos{
  public static void main(String[] args){
    String s1 = "GOSTO de Java";
    String s2 = "gosto de java";
    
    if(s1.equalsIgnoreCase(s2))
      System.out.println("As duas strings sao iguais");
    
    System.exit(0);
  }
} 
Aguardo retorno
GOSTEI 0
Helio Silva

Helio Silva

27/05/2011

@Paulo Entendi, mas no meu caso vou precisar declarar as duas variáveis ? "A" e "a" ? ou não necessariamente??
GOSTEI 0
Helio Silva

Helio Silva

27/05/2011

[quote="heliopiracicaba"]Olá, tenho a seguinte dúvida: tenho um menu que em vez de números eu uso letras, no caso eu defini letra maiúscula, mas quero também que o usuário use minusculas, por exemplo :
do{System.out.println("Escolha a opçao:");
         System.out.println("A - Faça isso:");
         System.out.println("B - Faça aquilo:");
         System.out.println("C - Sair:");
         resp1=sc.next();

         switch(resp1.charAt(0)){
             case 'A':
         menuA();
         break;
             case 'B':
         menuB();
         break;
             case 'C':
        System.exit(0);
Como devo proceder? posso usar if?
o switch permite vários case, por isso que precisa do break:
    do {
        System.out.println("Escolha a opçao:");
        System.out.println("A - Faça isso:");
        System.out.println("B - Faça aquilo:");
        System.out.println("C - Sair:");
        resp1 = sc.next();

        switch (resp1.charAt(0)) {
            case 'A':
            case 'a':
                menuA();
                break;
            case 'B':
            case 'b':
                menuB();
                break;
            case 'C':  case 'c':    // outra notação (prefiro as anteriores)
                System.exit(0);
        }
        ...
Opção menos performante/elegante, transformar a entrada para maiúsculo:
    do {
        System.out.println("Escolha a opçao:");
        System.out.println("A - Faça isso:");
        System.out.println("B - Faça aquilo:");
        System.out.println("C - Sair:");
        resp1 = sc.next();

        switch (resp1.toUpperCase().charAt(0)) {
            case 'A':
                menuA();
                break;
            case 'B':
                menuB();
                break;
            case 'C':
                System.exit(0);
        }
        ...
[[]]
GOSTEI 0
Helio Silva

Helio Silva

27/05/2011

@simu , @Paulo Muito obrigado pela dica, ajudou muito! Boa sexta pra vcs! abs.
GOSTEI 0
Douglas Eric

Douglas Eric

27/05/2011

Você quer "diferenciar" ou "não diferenciar"? pelo título do seu tópico, dá a idéia errada. O java é case sensitive, então ele já diferencia. Se você quer que tanto maiuscula quanto minuscula façam a mesma coisa, então você quer NÃO diferenciar. O jeito mais fácil de fazer isso é, trocar
 resp1=sc.next();
por
 resp1=sc.next().toUpperCase();  
O método toUpperCase() da classe String, retorna a mesma String, porém, com todas as letras maiusculas.
GOSTEI 0
Helio Silva

Helio Silva

27/05/2011

[quote="sekkuar"]Você quer "diferenciar" ou "não diferenciar"? pelo título do seu tópico, dá a idéia errada. O java é case sensitive, então ele já diferencia. Se você quer que tanto maiuscula quanto minuscula façam a mesma coisa, então você quer NÃO diferenciar. O jeito mais fácil de fazer isso é, trocar
 resp1=sc.next();
por
 resp1=sc.next().toUpperCase();  
O método toUpperCase() da classe String, retorna a mesma String, porém, com todas as letras maiusculas.
Obrigado Sekkuar, Realmente não tinha atentado para esse fato, vou me policiar e espero não fazer isso novamente. Farei o possível para que o tópico fique bem explicado e o assunto também! vlw.
GOSTEI 0
Helio Silva

Helio Silva

27/05/2011

Resolvido, utilizei as dicas do Simu e Sekkuar! valeu mais uma vez!!! []´s
GOSTEI 0
POSTAR