给出java代码:
private List<String> list_from = new ArrayList<String>();
private List<String> list_dest = new ArrayList<String>();
list_from
的值为:
[v5, v3, v5, v1, v1, v6, v6, v3, v4, v5, v4, v6]
list_dest
的值为:
[v3, v5, v1, v5, v6, v1, v3, v6, v5, v4, v6, v4]
我正在使用循环来用list语句打印出list_from中的值:
for(int i=0;i < list_from.size();i++){
if(list_dest.get(i+1) == list_from.get(i)){
System.out.println(list_from.get(i));
}
}
它给出了正确的结果,但在if语句中有未知错误。
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 18, Size: 18
非常感谢你的帮助!
答案 0 :(得分:3)
list_dest.get(i + 1),这是问题所在。 在最后一次迭代中,i的值是可能的最大索引。当你向它添加1时,它将给出arrayOutOfBoundsException。
最好使用string.equals()方法来比较字符串。
答案 1 :(得分:3)
比较字符串应由string.equals(string2)
完成
字符串是对象。比较对象时应始终使用equals
。
你也在比较数组中太多的索引。
您的代码应如下所示:
for(int i=0;i < list_from.size()-1;i++){
if(list_dest.get(i).equals(list_from.get(i+1))){
System.out.println(list_from.get(i));
}
}
答案 2 :(得分:2)
多个问题。首先,将循环条件更改为<list_from.size()-1
。
其次,将字符串与.equals()
进行比较,而不是==
。
代码变为
for(int i=0;i < list_from.size()-1;i++){
if(list_dest.get(i+1).equals(list_from.get(i))){
System.out.println(list_from.get(i));
}
}