如何将比较if语句转换为switch case语句?

时间:2016-06-06 18:33:05

标签: java

我是java编程的新手,我很难搞清楚这一点。

这是我的代码:

boolean running = true;
   PANTS:
while (running) {
    int waistMeasure = in.nextInt();

    if (waistMeasure >= 26 && waistMeasure < 28){
        System.out.println("You are a Small.");
        break;
    }
    if (waistMeasure >= 28 && waistMeasure < 30){
        System.out.println("You are a Medium.");
        break;
    }
    if (waistMeasure >= 30 && waistMeasure <= 34){
        System.out.println("You are a Large.");
        break;
    }

    else {
        System.out.println("Invalid input");
    }
}

有没有办法将其转换为switch case语句?

3 个答案:

答案 0 :(得分:1)

是的,有 - 但你必须为每个值创建一个case(如下所示)。您无法使用单个case表达一系列值。因此,如果您想要可读和可维护的代码,您应该坚持使用if s。

switch (waistMeasure) {
case 26:
case 27:
    System.out.println("You are a Small.");
    running = false;
    break;
case 28:
case 29:
// ....
}

答案 1 :(得分:0)

switch (waistMeasure) {
    case 26:
    case 27:
        System.out.println("You are a Small.");
        break PANTS;
    case 28:
    case 29:
        System.out.println("You are a Medium.");
        break PANTS;
    case 30:
    case 31:
    case 32:
    case 33:
    case 34:
        System.out.println("You are a Large.");
        break PANTS;
    default
        System.out.println("Invalid input");
}

答案 2 :(得分:-1)

你的意思是这样吗?

请注意,您必须使用PANTS语句的break标签退出循环,否则它们只会从switch中断并继续循环。

PANTS: for (;;) {
    int waistMeasure = in.nextInt();
    switch (waistMeasure) {
        case 26:
        case 27:
            System.out.println("You are a Small.");
            break PANTS;
        case 28:
        case 29:
            System.out.println("You are a Medium.");
            break PANTS;
        case 30:
        case 31:
        case 32:
        case 33:
        case 34:
            System.out.println("You are a Large.");
            break PANTS;
        default:
            System.out.println("Invalid input");
    }
}