0

配列リストが初期化されていない場合、コンパイラからエラー例外を取得せずに Java で配列リストのサイズを確認する方法。以下を試してみましたが、うまくいきません。そして、私はこのメッセージを受け取りました:スレッド「メイン」の例外 java.lang.IndexOutOfBoundsException: インデックス: 1、サイズ: 1

ArrayList<String> str = new ArrayList<>();
if (str.size()>0)
4

2 に答える 2

0

初期化とは、オブジェクトが参照に割り当てられているかどうかを意味しますか

コード付き

List<String> str;

str.size() を呼び出すと、このリスト参照にオブジェクトを割り当てていないため、null ポインター例外がスローされます。

参照を割り当てるには、次のことができます

List<String> str = new Arraylist<String>();

str は配列リスト オブジェクトを指しています。

電話できるようになりました

str.isEmpty()

リストに内容があるかどうかを確認します。

リストはゼロから始まるため、str.get(0) を呼び出すと、IndexOutOfBounds 例外が発生します。そこには何もないため、最初の要素 (インデックス 0) を取得できません

要素を追加すると

str.add("hello")

その後、あなたは呼び出すことができます

str.get(0) 

「こんにちは」を返します

str.get(1) を呼び出すと、IndexOutOfBound が返されます。これは、インデックス 1 が実際には配列リストの 2 番目の要素であり、これが存在しないためです。

于 2012-09-09T08:56:59.287 に答える
0

あなたが投稿したコードには、をスローするものは何もありませんIndexOutOfBoundsExceptionstr.get(0)以前はサイズチェックなしで電話していたのですか?

とにかく、コードは問題ありません。つまり、次のようなことを行うように拡張できるはずです。

List<String> someStrings = new ArrayList<String>();
...
if (someStrings.size() > 0) {
    System.out.println("First element of list is: " + someStrings.get(0));
} else {
    System.out.println("List is empty");
}

ただし、清潔さのために、代わりに を使用することをお勧めしif (!someStrings.isEmpty())ます。これは と同じことをチェックしif (someStrings.size() > 0)ます。

于 2012-09-09T07:57:09.493 に答える