質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

4回答

1415閲覧

javaでlistの要素の何番目が空か見る

shim1

総合スコア46

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/06/13 13:29

struts2での開発中にArrayLIstのエラー index:6 size:6みたいなエラ―が出てしまいました
原因はわかりました。そこでArrayLIstをgetする際に空だったらgetしないようにしたいのです。

java

1ArrayList<Integer> list = new ArrayList<>(); 2list.add(1); 3list.add(2); 4list.add(3); 5for(var i=0; i<5;i++){ 6if(list.get(i).toString == null){ 7 continue; 8} //ifで判別しようかなとおもっていたのですがダメ,もし通ったらcontinueで終了 9list.get(i); 10}

こんな感じですがダメでした。↑のはif文の条件をi<list.size()にすればいいと思うんですけど、
どうにかしてそれを使わずに実装したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2018/06/13 13:34

『どうにかしてそれを使わずに』どうして避けたいのでしょうか?
shim1

2018/06/13 13:40

もっと複雑で使えそうにないからです
退会済みユーザー

退会済みユーザー

2018/06/13 13:47

toString なんてfieldはないし null だったら NPEだね・w・
guest

回答4

0

註: 『結局何をしたいのか』を重視した回答です。

拡張for文を使ってみてはいかがでしょう。これが一番シンプルかと。

Java

1for(var e: list) { 2 System.out.println(e); 3}

投稿2018/06/13 13:42

編集2018/06/13 13:43
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

拡張for文を使うのがベストだと思いますが、イテレータという手法もありますので、試してみてはいかがでしょうか。
//コメントはイメージです。

Java

1import java.util.Iterator; 2 3 4ArrayList<Integer> list = new ArrayList<>(); 5 list.add(1); 6 list.add(2); 7 list.add(3); 8 Iterator<Integer> it=list.iterator(); //listにイテレータ(↑のようなもの)を生成(↑1,2,3) 9 10 while(it.hasNext()) { //(↑の右に要素があればtrue、なければfalse) 11 Integer e=it.next(); //(↑の右の要素をeに代入) 12 System.out.println(e); 13 }

投稿2018/06/13 13:58

shal0ne

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

やはりsizeを使うほうがいいのではないでしょうか。index:6 size:6のエラーはすでにおわかりかと思いますが、6個しか要素がないリストに対してindex=6の要素(indexは0からなので7番目)にアクセスしたことで発生しています。

これはgetした結果が空だから出たのではなく、用意されている要素の範囲を超えてアクセスすることで発生します。list.get(i).toStringのコードでは、中身を確認するためにアクセスしてしまっているので、結局同じ例外が出てしまいます。

対処はアクセス先を範囲内に制限することが有効ですので、要素数確認のためにはlist.size()が不可欠可と思います。

投稿2018/06/13 13:41

denzow

総合スコア640

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

原因を間違えています。

sizeが6のListに対して有効なインデックスは0から5です。6をインデックスに使ってgetしようとしたための例外です。
getの前に、インデックスがサイズ未満であることをチェックする必要があります。

投稿2018/06/13 13:39

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問