调用另一个方法创建的变量时的方法错误

时间:2017-11-08 20:38:20

标签: java

当我调用我的getUserInput并输入我使用createBoard方法创建的2d Char数组时,它会打印"该输入无效!请输入另一个。"。然后我输入另一个/或相同的值,我得到一个IllegalArgumentException。

但是如果我使用完全相同的代码并在我在方法中创建和初始化的二维数组上调用它,就像这样:

public static void main(String[] args) {
    char a = ' ';
    char b = 'x';
    char c = 'o';

    char[][] n = {{a,a,a},
                  {a,b,b},
                  {a,a,a}};

    displayBoard(n);
    getUserMove(n);
    displayBoard(n);
}

代码完美无缺。请帮助我找不到我的问题:/ 我已经在下面包含了createBoard和getUserMove方法。谢谢!

public static char[][] createBoard(int n) {     
    char[][] charArray = new char[n][n];

    for(int i = 0; i < charArray.length; i++) {
        for (int v = 0; v < i; v++) {
            charArray[i][v] = ' ';
        }
    }
    return charArray;
}

public static void getUserMove(char[][] n) {
    Scanner in = new Scanner(System.in);
    Scanner in2 = new Scanner(System.in);

    int row = in.nextInt();
    int col = in.nextInt();

    do {
        if (row < n.length && col < n[0].length && n[row][col] == 32) {
            writeOnBoard(n, 'x', row, col);
        }

        else {
            System.out.println("That input was invalid! Please enter another.");
            if (! in2.hasNextInt()) {
                in2.next();
            }
            row = in2.nextInt();
            col = in2.nextInt();

            writeOnBoard(n, 'x', row, col);
        }

    }while(row > n.length - 1 || col > n[0].length - 1);
}

1 个答案:

答案 0 :(得分:1)

这个for循环被破坏了:

for(int i = 0; i < charArray.length; i++) {
    for (int v = 0; v < i; v++) {
        charArray[i][v] = ' ';
    }
}

首次迭代,让我们看一下顶部的代码。在您的第一个for循环中,您将i初始化为0,然后在第二个for循环中将v初始化为0,并检查v < i是否为evalParser。这不对。