【发布时间】:2017-04-09 10:15:34
【问题描述】:
下面是我的switch语句,它采用字符串'tops':
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;
}
目前我的开关只是对字符串中的第一个字符进行分析,而不是全部分析它们是否包含大小写的字母。
例如,如果我输入“ms”作为上衣,我会得到正确的输出,但如果我输入“msmh” 它不会并导致默认或终止
【问题讨论】:
-
如果您不能这样做,请在
switch。请改用if...else if...else -
你的例子不正确。如果字符串
tops包含"ms",则"m"的switch case 不匹配。切换字符串总是比较整个字符串而不是第一个字符。 -
不用写
if声明@aahung -
目前你的切换已经太复杂了。你应该问如何简化整个事情......
-
只需遍历字符串中的所有字符,并在每次迭代时对当前字符执行
switch。
标签: java string switch-statement break