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
}
答案 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)
更改所有if
和else if
并将其置于switch(dir) { }
内。
例如,改变
`else if (dir == 3)`
带
case 3 :
your code;
break;
并将它们放在switch(dir) { }
区块内。