2017-04-09 1 views
0

Ci-dessous mon instruction switch qui prennent la chaîne « tops »: Au moment où mon commutateurComment analyser plus d'un caractère dans la chaîne pour l'utiliser dans un commutateur?

switch (tops) { 

      case "m": 
       if (size.equals("m")) { 
        mb += 1.00; 
        to += "Mozzarella"; 
       } else if (size.equals("l")) { 
        lb += 1.50; 
        to += "Mozzarella"; 
       } 
       break; 

      case "o": 
       if (size.equals("m")) { 
        mb += 0.80; 
        to += "Olives"; 
       } else if (size.equals("l")) { 
        lb += 1.20; 
        to += "Olives"; 
       } 
       break; 

      case "h": 
       if (size.equals("m")) { 
        mb += 1.40; 
        to += "Ham"; 
       } else if (size.equals("l")) { 
        lb += 2.10; 
        to += "Ham"; 
       } 

       break; 
      case "p": 
       if (size.equals("m")) { 
        mb += 1.00; 
        to += "Pineapple"; 
       } else if (size.equals("l")) { 
        lb += 1.50; 
        to += "Pineapple"; 
       } 
       break; 

      case "s": 
       if (size.equals("m")) { 
        mb += 0.80; 
        to += "Spinach"; 
       } else if (size.equals("l")) { 
        lb += 1.50; 
        to += "Spinach"; 
       } 
       break; 
      default: 
       to = "default"; 
       break; 
} 

est seulement anazylizing le premier caractère de la chaîne et pas tous pour voir si elles contiennent les lettres pour le cas.

par exemple, si je suis entré dans « ms » pour le haut je recevrais la sortie correcte mais si je suis entré dans « msmh » il n'a pas et résultats par défaut ou se termine

+0

Dans 'switch' si vous ne pouvez pas faire cela. Utilisez 'if ... else if ... else' à la place – xhg

+2

Votre exemple est incorrect. Si la chaîne 'tops' contient' "ms" 'alors le cas de switch pour' "m" 'ne correspond pas. Changer pour les chaînes de comparer toujours la chaîne entière pas les premiers caractères. – vanje

+0

Il n'est pas nécessaire d'écrire une instruction 'if' @aahung –

Répondre

0

Pour analyser plus d'un cas en java, vous devez mettre le second cas avant la pause qui équivaut à else if(boolean || boolean)

Exemple:

case "B": 
case "C": 
{ 
    //CODE 
    break; 
}