-4

I am having an issue that I cannot get rid off. I am running the code from bellow and for this input:

*Enter cells: XXOO_OX

| X X | | O O | | O X |

Enter the coordinates:You should enter numbers! Enter the coordinates:one You should enter numbers! Enter the coordinates:ont three You should enter numbers! Enter the coordinates:1 3

| X X X | | O O | | O X |

Process finished with exit code 0*

and after running it I get the catch message before I input the coordinates. Why? What should I change?

Scanner scanner = new Scanner(System.in); String[][] tictactoe = new String[3][3];

    //init method
    System.out.print("Enter cells: ");
    String s = scanner.next();


    String a = s.substring(0, 1);
    tictactoe[0][0] = a;
    String b = s.substring(1, 2);
    tictactoe[0][1] = b;
    String c = s.substring(2, 3);
    tictactoe[0][2] = c;
    String d = s.substring(3, 4);
    tictactoe[1][0] = d;
    String e = s.substring(4, 5);
    tictactoe[1][1] = e;
    String f = s.substring(5, 6);
    tictactoe[1][2] = f;
    String g = s.substring(6, 7);
    tictactoe[2][0] = g;
    String h = s.substring(7, 8);
    tictactoe[2][1] = h;
    String i = s.substring(8, 9);
    tictactoe[2][2] = i;

    for (int n = 0; n < 3; n++) {
        for (int m = 0; m < 3; m++) {
            String cuv = tictactoe[n][m];
            if (cuv.equals("_")) {
                tictactoe[n][m] =" ";
            }
        }
    }

            System.out.println("---------");
    System.out.println("| " + tictactoe[0][0] + " " + tictactoe[0][1] + " " + tictactoe[0][2] + " |");
    System.out.println("| " + tictactoe[1][0] + " " + tictactoe[1][1] + " " + tictactoe[1][2] + " |");
    System.out.println("| " + tictactoe[2][0] + " " + tictactoe[2][1] + " " + tictactoe[2][2] + " |");
    System.out.println("---------");

    String player1 = "X";
    String letter;
    boolean correctCoordinate=false;

    while (!correctCoordinate){
        System.out.print("Enter the coordinates:");

        String input=scanner.nextLine();
        String [] pieces = input.trim().split("\\s+");
        int x;
        int y;

        try {

            x = Integer.parseInt(pieces[0]);
            y = Integer.parseInt(pieces[1]);

            letter = tictactoe[3-y][x-1];

            if (letter.equals("X") || letter.equals("O")) {
                System.out.println("This cell is occupied! Choose another one!");
            } else {
                tictactoe[3-y][x-1]=player1;
                System.out.println("---------");
                System.out.println("| " + tictactoe[0][0] + " " + tictactoe[0][1] + " " + tictactoe[0][2] + " |");
                System.out.println("| " + tictactoe[1][0] + " " + tictactoe[1][1] + " " + tictactoe[1][2] + " |");
                System.out.println("| " + tictactoe[2][0] + " " + tictactoe[2][1] + " " + tictactoe[2][2] + " |");
                System.out.println("---------");
                correctCoordinate=true;
            }

        }catch (NumberFormatException err1) {
            System.out.println("You should enter numbers!");

        }catch (ArrayIndexOutOfBoundsException err2){
            System.out.println("Coordinates should be from 1 to 3!");
        }
    }

Thank you, Florin

Florin
  • 25
  • 5

1 Answers1

1

The best way to debug your code is by stack tracing.

Try adding

       catch (NumberFormatException err1) {
            err1.printStackTrace();
            System.out.println("You should enter numbers!");

        }catch (ArrayIndexOutOfBoundsException err2){
            err2.printStackTrace();
            System.out.println("Coordinates should be from 1 to 3!");
        }

This way you can trace your issue.

Hope it was helpful.

Have a nice day :)

Sagar Saud
  • 84
  • 1
  • 10