我想比较两个不同数组中的两个String
。 String
存储在s1
和s2
个变量中。这部分效果很好,但如果我添加if条件if(s1.equals(s2)){/*...*/}
,我会得到ArrayIndexOutOfBoundsException
。
看看这两个屏幕截图:
在这两种情况下,数组都具有相同的值。唯一改变的是if条件。
图片#1
图片#2
代码:
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;
}
答案 0 :(得分:1)
您的例外情况就在这一行 - String s1 = tmp.opisTovora[0]
。这意味着tmp.opisTovora
是一个空数组,因此tmp.opisTovora[0]
超出了该数组的范围。
它与equals
无关。