如何使用Switch而不是if else

时间:2013-12-19 19:39:38

标签: java

Hi Folks new to programming ...是否有可能将此更改为switch语句而不是if else if ....如果是这样,请指出我正确的方向

int dir = get_dir();

    if (dir == 0) //  facing north (up)
        {
        setX(x); //  goes to x position
        setY(y - 1); //  goes to y -1 position
        } 
    else if (dir == 1) //  facing east (right)
        {
        setX(x - 1); //  goes to x -1 position
        setY(y); //  goes to y position
        } 
    else if (dir == 2) // facing south (down)
        {
        setX(x); //  goes to x position
        setY(y - 1); // goes to y -1 position
        } 
    else if (dir == 3) // facing west (left)
        {
        setX(x - 1); //  goes to x -1 position
        setY(y); //  goes to y position
        }

3 个答案:

答案 0 :(得分:8)

是的,当然。您只需要为要尝试组合的每个if语句创建一个单独的大小写:

int dir = get_dir();

switch(dir){

case 0:               //  facing north (up)
    setX(x);          //  goes to x position
    setY(y - 1);      //  goes to y -1 position
    break;

case 1:               //  facing east (right)
    setX(x - 1);      //  goes to x -1 position
    setY(y);          //  goes to y position
    break;

case 2:               // facing south (down)
    setX(x);          //  goes to x position
    setY(y - 1);      // goes to y -1 position
    break;

case 3:               // facing west (left)
    setX(x - 1);      //  goes to x -1 position
    setY(y);          //  goes to y position
    break;
}

正如其他人已经说过的那样,你也可以创建一个默认案例来处理不是0-3的选项。此外,您可以枚举这些方向或创建常量值以增强可读性。

答案 1 :(得分:3)

你也可以使用enum来打开方向,这可能是一种更具可读性和更类型安全的方式,即你不会将你的方向与其他整数值混合:

enum Direction {NORTH, SOUTH, WEST, EAST};

public static void main(String[] args) {
    Direction dir = Direction.EAST;

    switch(dir){
        case NORTH:
            setX(x);     //  goes to x position
            setY(y - 1); //  goes to y -1 position
            break;
        case WEST:
            setX(x - 1); //  goes to x -1 position
            setY(y);     //  goes to y position
            break;
        ...
    }
}

答案 2 :(得分:0)

更改所有ifelse if并将其置于switch(dir) { }内。 例如,改变

`else if (dir == 3)` 

case 3 :  
     your code;
     break;

并将它们放在switch(dir) { }区块内。