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
Dans 'switch' si vous ne pouvez pas faire cela. Utilisez 'if ... else if ... else' à la place – xhg
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
Il n'est pas nécessaire d'écrire une instruction 'if' @aahung –