Как объединить оператор switch и если регистр? - PullRequest
0 голосов
/ 09 февраля 2020

Я новичок в java и пытаюсь запрограммировать функцию, которая проверяет, действительны ли ходы в настольной игре.

B1 имеет A2 и C2 в качестве допустимых ходов.

D1 имеет C2 и E2, однако, если C2 занят B1, то D1 имеет только E2 в качестве допустимого хода.

F1 имеет E2 и G2, опять же, если E2 занята D1, F1 имеет только G2 в качестве допустимого хода.

Наконец, H1 имеет только G2 в качестве допустимого хода и других допустимых ходов если G2 занят F1.

То же правило применяется к B1, если C2 занят D1.

Я думал объединить оператор 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.

1 Ответ

0 голосов
/ 09 февраля 2020

Возможно, вы ищете что-то вроде этого:

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;


    }
...