繁体   English   中英

奇怪的java.lang.ArrayIndexOutOfBoundsException

[英]Strange java.lang.ArrayIndexOutOfBoundsException

我的申请中有一个奇怪的问题

有些用户发给我错误:

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");
            ...     

        }            
     }
}

有没有人看到它在哪里

编辑完整循环

 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];

现在让希望它固定下来

如果您想要做的就是将空格或空格分开,请忘记循环。 只使用拆分:

String[] words = word.split( "\s|_" );

这会将单词吐成空格或下划线上的单词数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM