Break不会退出开关体,而是移动到最后一行

时间:2017-03-28 08:35:52

标签: java switch-statement break

我在Java中使用switch语句,一旦程序到达break语句,它不会退出开关,而是移动到switch体的最后一行并执行它。

我已经在调试模式下在控制台“Sofia”和250中编写了它。它进入第一个开关,找到“Sofia”情况,为佣金变量赋值,执行中断然后转到最后一行开关体的一部分也执行返回。如果我完全删除默认情况,在执行中断后它再次进入正文的最后一行并从第三种情况执行中断。无论我尝试什么,执行中断似乎都不会退出开关体的主体并始终转到它的最后一行。

你知道为什么会这样吗?这是代码:

package SlojniLogicheskiProverki;

import java.util.Scanner;

public class Zadacha {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String city = scan.nextLine();
        double sales = Double.parseDouble(scan.nextLine());
        double commission = 0;
        if (sales >= 0 && sales <= 500) {
            switch (city) {
                case "Sofia":
                    commission = 5;
                    break;
                case "Plovdiv":
                    commission = 5.5;
                    break;
                case "Varna":
                    commission = 4.5;
                    break;
                default:
                    System.out.println("error");
                    return;
            }
        } else if (sales > 500 && sales <= 1000) {
            switch (city) {
                case "Sofia":
                    commission = 7;
                    break;
                case "Plovdiv":
                    commission = 8;
                    break;
                case "Varna":
                    commission = 7.5;
                    break;
                default:
                    System.out.println("error");
                    return;
            }
        } else if (sales > 1000 && sales <= 10000) {
            switch (city) {
                case "Sofia":
                    commission = 8;
                    break;
                case "Plovdiv":
                    commission = 12;
                    break;
                case "Varna":
                    commission = 10;
                    break;
                default:
                    System.out.println("error");
                    return;
            }
        }
        else if (sales > 10000) {
            switch (city) {
                case "Sofia":
                    commission = 12;
                    break;
                case "Plovdiv":
                    commission = 14.5;
                    break;
                case "Varna":
                    commission = 13;
                    break;
                default:
                    System.out.println("error");
                    return;
            }
        }        else {
            System.out.println("error");
            return;
        }
        System.out.printf("d%",commission);
    }
}

0 个答案:

没有答案