Search code examples
javaswitch-expression

problem with "String line = switch (a) in java loop. Cant implement cases


I made a program of tic-tac-toe. There is a problem on the line String line = switch(a) ("illegal start of expression").

It is a window application of this game.

I have no idea how to fix this.

public void checkIfGameIsOver(){
    for (int a = 0; a < 8; a++) {
        String line = switch (a) {
            case 0 -> button1.getText() + button2.getText() + button3.getText();
            case 1 -> button4.getText() + button5.getText() + button6.getText();
            case 2 -> button7.getText() + button8.getText() + button9.getText();
            case 3 -> button1.getText() + button5.getText() + button9.getText();
            case 4 -> button3.getText() + button5.getText() + button7.getText();
            case 5 -> button1.getText() + button4.getText() + button7.getText();
            case 6 -> button2.getText() + button5.getText() + button8.getText();
            case 7 -> button3.getText() + button6.getText() + button9.getText();
            default -> null;
        };

I'm using Java version 1.8.0_231.


Solution

  • Switch expressions were introduced in Java 12 as a preview feature and formally made available in Java 13 (JEP 354). Given you're using Java 8, you cannot use switch expressions.

    You either need to upgrade to a more recent Java version (e.g. Java 17), or use a switch statement.

    That is:

    public void checkIfGameIsOver(){
        for (int a = 0; a < 8; a++) {
            String line;
            switch (a) {
            case 0:
                line = button1.getText() + button2.getText() + button3.getText();
                break;
            case 1:
                line = button4.getText() + button5.getText() + button6.getText();
                break;
            case 2:
                line = button7.getText() + button8.getText() + button9.getText();
                break;
            case 3:
                line = button1.getText() + button5.getText() + button9.getText();
                break;
            case 4:
                line = button3.getText() + button5.getText() + button7.getText();
                break;
            case 5:
                line = button1.getText() + button4.getText() + button7.getText();
                break;
            case 6:
                line = button2.getText() + button5.getText() + button8.getText();
                break;
            case 7:
                line = button3.getText() + button6.getText() + button9.getText();
                break;
            default:
                line = null;
            };