我不明白为什么这不起作用,如果有人能提供帮助那就太好了;
for(int i = 0; i < 10 ; i++){
lines = fileL[i];
for(int j = 0; j < lines.length(); j++){
enemySpawningL[i][j] = fileL[i].substring(j*2, 1);
}
}
其中enemySpawning [] []已被设置为字符串,fileL被设置为此;
private String[] fileL = {
"1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1",
"1 0 0 0 0 1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 1 0 0 0 0 1",
"1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1",
"1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1",
"1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 1 0 2",
"1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 0 0 1",
"1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 0 0 1 0 2 0 1 0 3 0 1",
"1 0 0 0 2 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1",
"2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3 0 2 0 0 3",
"2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2",
};
(我尝试使用文本文件,但我认为没有意义,因为它不太重要)
编辑:我只是想让敌人的行列表成为[行号] [行号]
EDIT2:我得到的错误是java.lang.NullPointerException
答案 0 :(得分:0)
错误可能是因为您没有初始化enemySpawningL
。
String[][] enemySpawningL = new String[rowsNum][columnsNum];
如果我理解你正在尝试做什么,请将代码更改为
for(int i = 0 ; i < 10 ; ++i) {
String[] digits = fileL[i].split(" ");
for(int j = 0 ; j < digits.length ; ++j) {
enemySpawningL[i][j] = digits[j];
}
}
这将在每个单元格中为您提供一位数字。目前你的substring()是错误的,因为起点大于j&gt;的终点。 0如果您更改顺序,则每次都插入带有多个数字的字符串。
"1"
"1 0"
"1 0 0"
....
答案 1 :(得分:0)
问题是,正如@guy所提到的,没有初始化数组,但是这里还有另一个错误:
enemySpawningL[i][j] = fileL[i].substring(j*2, 1);
因为'j'可以具有fileL[i]
长度的最大值,所以如果请求索引j
* 2,则在循环的一半中它将超出约束。您也以不正确的方式使用substring
方法。你希望循环看起来像是:
for(int j = 0; j < lines.length(); j += 2){
enemySpawningL[i][j] = fileL[i].substring(j, j+1);
}
j
变量现在每次迭代增加2(跳过空格),substring
将从字符串j
的位置file[L]
返回一个字符。这就是你想要的。