在我对数组和ArrayList的继续教育中,我试图通过将ArrayList从一个方法传递给另一个方法来实现我的代码。这里是我的代码:在方法之间传递ArrayList
public void exampleArrayList() {
ArrayList<String> al = new ArrayList<String>();
al.add("AZ");
al.add("BY");
al.add("CX");
al.add("DW");
al.add("EV");
al.add("FU");
al.add("GT");
display(al);
}
public void display(ArrayList al) {
System.out.println("Index of 'AZ': " + al.indexOf("AZ"));
System.out.println("Index of 'FU': " + al.indexOf("FU"));
System.out.println("Index of 'AA': " + al.indexOf("AA"));
System.out.println("Index of 'CX': " + al.indexOf("CX"));
// for (String row : al)
// System.out.println("Value at Index " + al.indexOf(row) +
// " is " + al.get(al.indexOf(row)));
for(int i = 0; i < al.size(); i++)
System.out.println("Value at Index " + al.indexOf(i) +
" is " + al.get(al.indexOf(i)));
}
在显示方法适用于两个语句注释掉。当前注释掉的for语句不起作用,因为row正在查找一个String,但即使数组al是一个字符串,get也会分配一个对象。我是否需要将al投入字符串或其他内容?当我使用创建ArrayList的同一个方法运行for循环时,情况并非如此,我不了解它们之间的区别。
第二个for语句没有被注释掉导致系统崩溃给我以下运行时错误:
java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
我试图改变i < al.size()
的硬编码数,它还是没有,我不知道为什么。
原始类型?为什么? – bcsb1001
我想你的意思是“价值在指数'我'是'al.get(i)'”? –
准确的板球。只是把自己绑在想着它的结上。 – Airfix