我已经多次在编程问题上找到了我的答案,但事情是这次我不能,而不是在这里,一般不在网上所以我在这里问。
我收到此错误
在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))
答案 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];
然后更改每次迭代的限制(将每个迭代次数减一)。