Java中的2维char数组创建/初始化

时间:2015-11-02 05:04:40

标签: java arrays multidimensional-array char

我已经多次在编程问题上找到了我的答案,但事情是这次我不能,而不是在这里,一般不在网上所以我在这里问。

我收到此错误 Error msg: Syntax error on token ";",, expected.

public char pinakas[][] - 第4行,我试图创建/初始化我的2维字符数组(它将从A存储到字符Z)

public class Board {

    public char pinakas[][]; 
    pinakas = new char[4][3];


    // constructor - initialize
    public Board() {

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = '*';
            }
        }
    }

    // Fill board with *
    public void fillBoard1() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = '*';
            }
        }
    }

    // Fill board with A
    public void fillBoard2() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = 'A';
            }
        }
    }
}

请帮助,我疯了 (我使用Eclipse和Java编码(huehue))

7 个答案:

答案 0 :(得分:2)

首先,您有2个初始化阵列的选项:
1.你可以把它放在班级的顶端:

public char pinakas[][] = new char[4][3];

请注意,在java中,大多数程序员会将[]放在变量后面而不是在其名称之后 2.你可以在类的顶部声明它并在构造函数中初始化:

public char pinakas[][];

public Board()
{
    pinakas = new char[4][3];
    //here you can do whatever you want
}

其次,你有array,大小为[4] [3] 在for循环中,您从0传递到4(包括4),从0传递到3(包括3)。 实际上,第一个位置有5个可能的值。和4为第二个位置。 所以,即使你设法解决了1个问题,你也会得到OutOfBoundsException

答案 1 :(得分:0)

真正的答案是你不能在类体中拥有表达式。虽然这没关系:

public char pinakas[][] = new char[4][3];

你现在拥有的不是。

答案 2 :(得分:0)

你不能把这段代码放在你班级里面

pinakas = new char[4][3];

它必须位于方法或构造函数中。 或者您可以在定义变量的同时简单地初始化变量:

public char pinakas[][] = new char[4][3];

答案 3 :(得分:0)

您的问题是您在Java类中将表达式分成两行,这是无效的。代码只能在方法中执行。您只需要将两行合并为一行:

变化:

public char pinakas[][]; 
pinakas = new char[4][3];

要:

public char pinakas[][] = new char[4][3];

答案 4 :(得分:0)

你需要将你的pinkas数组的2行放入一行,如下所示:

public char pinakas[][] = new char[4][3];

然后,在填充数组时需要修复for循环,这样就不会出现IndexOutOfBounds异常:

public Board() {
    //You were using 5 and 4
    //When you should be using 4 and 3
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 3; j++) {
            pinakas[i][j] = '*';
        }
    }
}

答案 5 :(得分:0)

试试这个...... public char a [] [] = new char [2] [3];

我认为Eclipse不支持数组声明,然后在方法之外的类中进行初始化。

答案 6 :(得分:0)

只需使用:

char pinakas[][]=new char[5][4];

避免在不同的步骤中进行声明和初始化,或者在课外进行声明。

或使用:

char pinakas[][]=new char[4][3];

然后更改每次迭代的限制(将每个迭代次数减一)。