Java switch语句直接进入默认值

时间:2016-03-23 13:24:53

标签: java

我正在尝试使用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 + "$.");

3 个答案:

答案 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:
...

这有助于防止在案例陈述中输入拼写错误。