我的申请中有一个奇怪的问题
有些用户向我发送错误:
java.lang.ArrayIndexOutOfBoundsException
我,我自己,从未经历过这样的错误。这是代码:
for(int i =0; i<length*2; i+=2) {
if(charsLeft[i/2]==1)
temp[i]=word[i/2];//IT HAPPENS HERE
....
length = word.length;
charsLeft = new int[length];
temp = new String[length*2];
当用户返回主屏幕时,应用程序会保存并稍后以这种方式加载数据:
public Bundle saveState(Bundle bundle) {
synchronized (surfaceHolder) {
if (bundle != null) {
bundle.putStringArray("word",game.word.word);
bundle.putIntArray("charsLeft",game.word.charsLeft);
bundle.putInt("length",game.word.word().length());
bundle.putStringArray("temp",game.word.temp);
bundle.putCharArray("characters", game.word.characters);
...
}
}
return bundle;
}
public synchronized void restoreState(Bundle bundle) {
synchronized (surfaceHolder) {
mPaused = true;
if (bundle != null) {
game.word.word = bundle.getStringArray("word");
game.word.length = bundle.getInt("length");
game.word.init();
game.word.charsLeft = bundle.getIntArray("charsLeft");
game.word.temp = bundle.getStringArray("temp");
game.word.characters = bundle.getCharArray("characters");
...
}
}
}
有没有人知道它在哪里
EDIT 完整循环
for(int i =0; i<(length)*2; i+=2) {
if(charsLeft[i/2]==1)
temp[i]=word[i/2];
else
temp[i]="_";
temp[i+1]=" ";
}
示例单词[0] =单词[1] = n ..... - &gt; “中回答” 循环在空格和字母中转移单词,或者如果字母没有被猜到_ 恩。 a n s _ e _
编辑: 我想我发现了错误: 一个线程正在调用循环,而另一个线程可以将word重新分配给另一个值,如果在更改length的值之前调用了循环,则会出现错误。 我把循环改为了这个
temp = new String[word.length*2];
for(int i =0; i<(word.length*2); i+=2) {
if(charsLeft[i/2]==1)
temp[i]=word[i/2];
现在让我们希望它固定
答案 0 :(得分:2)
忘掉你的循环,如果你想做的就是用空格或空格划分单词。只使用拆分:
String[] words = word.split( "\s|_" );
这会将单词吐成空格或下划线上的单词数组。