Java等于导致ArrayIndexOutOfBoundsException

时间:2014-11-20 12:50:56

标签: java equals indexoutofboundsexception

我想比较两个不同数组中的两个StringString存储在s1s2个变量中。这部分效果很好,但如果我添加if条件if(s1.equals(s2)){/*...*/},我会得到ArrayIndexOutOfBoundsException

看看这两个屏幕截图:

在这两种情况下,数组都具有相同的值。唯一改变的是if条件。

图片#1 enter image description here

图片#2 enter image description here

代码:

        Vagon tmp = first;
        int stevec = 1;
        while(tmp != null){
            double trenutenVolumen = 0;
            for(int j = 0; j < tmp.opisTovora.length; j++){
                trenutenVolumen += tmp.volumenTovora[j];
            }
            double lahkoDodamVolumna = tmp.volumen-trenutenVolumen;
            double lahkoDodamTeze = lokomotiva.najvecjaMasa-trenutnaTeza;

            System.out.println("len: "+tmp.opisTovora.length);
            if(tmp.tipTovora == tipTovora[0] && lahkoDodamVolumna >= volumenTovora[0] && trenutnaTeza+tezaTovora <= lokomotiva.najvecjaMasa){
                if(!tmp.tipTovora){
                    String s1 = tmp.opisTovora[0];
                    String s2 = opisTovora[0];
                    //if(s1.equals(s2)){
                        System.out.println(s1 + " == " + s2);
                        System.out.println("LAHKO DODAM TOVOR #" + (i+1) + " => V VAGON #" + stevec);
                        break;
                    //}
                }
                if(tmp.tipTovora){
                    System.out.println("LAHKO DODAM TOVOR #" + (i+1) + " => V VAGON #" + stevec);
                    break;
                }
            }

            stevec++;
            tmp = tmp.next;
        }

1 个答案:

答案 0 :(得分:1)

您的例外情况就在这一行 - String s1 = tmp.opisTovora[0]。这意味着tmp.opisTovora是一个空数组,因此tmp.opisTovora[0]超出了该数组的范围。

它与equals无关。