我正在尝试使用switch语句来计算患者对其保险的欠款,但由于某种原因,它总是向他们收取45美元的默认价格。如果他们没有使用这三个选项中的任何一个,他们的价格是45美元,但即使我说我使用的是美国保险或Mountain Health,它也说价格为45美元。知道为什么它不起作用吗?
此外,有没有办法忽略用户是否使用大写字母,这样如果他们输入“美国保险”,“美国保险”或“美国保险”,他们会得到相同的结果?
int charge;
Scanner kb = new Scanner(System.in);
System.out.print("What is the name of your insurance? ");
Insurance = kb.nextLine();
switch (Insurance) {
case "Mountain Health":
charge= 30;
break;
case "US Insurance":
charge= 40;
break;
case "Blue Insurance":
charge= 45;
break;
default:
price = 45;
}
System.out.println("Your charge is " + charge + "$.");
答案 0 :(得分:6)
将完整案例与比较的字符串匹配
switch (insurance.toUppercase()) {
...
case "MOUNTAIN HEALTH":
....
答案 1 :(得分:1)
如果没有满足开关案例中的任何选项,您的代码将转到默认情况。可变电荷不再使用,而是打印电荷。
你应该删除空格并进行低/大写比较:
switch (insurance.toLowerCase().trim()) {
case "mountain health":
charge = 30;
break;
....
答案 2 :(得分:0)
我还建议将选项放在一个类中(我相信这是最佳实践):
public class InsuranceTypes {
public static String MOUNTAIN_HEALTH = "MOUNTAIN HEALTH";
public static String US_INSURANCE = "US INSURANCE"
...
}
在使用中:
switch (insurance.toUppercase()) {
...
case InsuranceTypes.MOUNTAIN_HEALTH:
...
这有助于防止在案例陈述中输入拼写错误。