java - 如何结合switch语句和if case?
问题描述
我是 java 新手,并试图编写一个函数来检查棋盘游戏中的动作是否有效。
B1 有 A2 和 C2 作为有效的移动。
D1 有 C2 和 E2,但是如果 C2 被 B1 占据,那么 D1 只有 E2 作为有效移动。
F1有E2和G2,同样如果E2被D1占用,F1只有G2作为有效走法。
最后 H1 只有 G2 作为有效走法,如果 G2 被 F1 占用,则没有其他有效走法。
如果 C2 被 D1 占用,则同样的规则适用于 B1。
我想过将 switch 语句与 if 结合起来,但我不知道该怎么做。
到目前为止,这是我的代码:
public static boolean isValidMove(int dim, String[] players, char figure, String origin, String dest) {
if ((dim < 4) && (dim > 26))
throw new IllegalArgumentException ("NO!");
if (players == null)
throw new IllegalArgumentException ("NO!");
if ((figure != 'F') && (figure != 'H'))
throw new IllegalArgumentException ("NO!");
switch (origin) {
case "B1":
dest = "A2";
dest = "C2";
break;
case "D1":
dest = "C2";
dest = "E2";
break;
case "F1":
dest = "E2";
dest = "G2";
break;
case "H1":
dest = "G2";
break;
}
return true;
}
原始字符串是 B1、D1、F1 和 H1。
解决方案
您可能正在寻找这样的东西:
switch (origin) {
case "B1":
case "H1":
System.out.println("This applies to both B1 and H1");
origin == B1 ? System.out.println("This only applies to B1) : System.out.println("This only appliest to H1)
break;
case "D1":
case "D3"
case "F1":
System.out.println("This applies to D1, D3 and F1");
//if....
break;
}
return true;
}