私は配列と配列リストの教育を続けていますが、あるメソッドから別のメソッドに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文は、行が文字列を検索しているが、配列alが文字列であってもオブジェクトに割り当てられているため動作しません。アルを弦などにキャストする必要がありますか?これは、ループがArrayListを作成したのと同じメソッドにあるときにforループを実行したときに当てはまるものではなく、その違いを理解できません。
コメントアウトされていない文のための第二は、私に次のランタイムエラーを与えるクラッシュが発生します。
java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
私は、ハードコード化された番号にi < al.size()
を変更しようと、それはまだ失敗したと私はしないでください理由を知っている。
生タイプより適切かもしれないために強化使って、何らかの理由でインデックスを必要としない限り?どうして? – bcsb1001
あなたは「インデックスiの値が 'al.get(i)'」であることを意味すると思いますか? –
右クリケット。ちょうどそれについて考えて結びついて結ばれた。 – Airfix