나는 일부 사용자 나에게 오류를 보내 내 응용 프로그램이상한 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];
, 응용 프로그램은 저장하고 나중에 데이터를 이런 식으로로드 : 그것은
편집을 GOE 곳
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");
...
}
}
}
사람이 볼 수 있습니까를 전체 루프
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 =를 ..... -> "대답" 루프가 공백 문자와 문자로 나뉘거나 문자가 아직 추측되지 않은 경우 _ ex. ANS _ E _
편집 : 은 내가 오류를 발견 한 것 같아요 : 타 스레드가 다른 값으로 단어를 재 할당 할 수 있으며, 루프는 길이의 값 전에 호출 된 경우 다음 변경하는 동안 스레드는 루프를 호출했다 오류가 있습니다. 나는 지금 희망이 있습니다이
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];
에 루프를 변경의 당신이 원하는 모든 공백이나 공백으로 단어를 분할하는 경우
루프가 심각하게 혼란 스럽습니다. 이해하기 쉽게 만들 수 있습니까? – Jivings
explenation을 추가하면 희망을 이해합니다. – user1104939
첫 번째 예에서는 'i <길이 * 2'이고 다른 i (길이 -1) * 2는 하나를 사용하고 있습니까? 그리고 또 하나의 질문은'length == word.length'입니까? – tidbeck