首页 > 解决方案 > 如何结合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。

标签: javaif-statementswitch-statement

解决方案


您可能正在寻找这样的东西:

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;


    }

推荐阅读