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

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

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

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

2回答

1015閲覧

ArrayListについてです。

0516bz

総合スコア13

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

1クリップ

投稿2019/03/24 01:59

Mainクラスに3人の名前、年齢、身長、体重の配列を宣言する。
その値をManBean型のlistにセットし(名前は除く)Mainクラスで表示したいのですが
下記のコードで実行するとコンソール画面でエラーになってしまいます。
太郎さんの
年齢は25歳です。身長は180センチです。体重は70キロです。
・・・
というように3人分出したいのですが、どう修正したらいいのか教えてください。
お願い致します。

import java.util.ArrayList;

public class Main {

public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ ManBean manBean = new ManBean(27, 180 ,17); ArrayList<ManBean> list = new ArrayList<ManBean>(); list.add(25, manBean); list.add(180,manBean); list.add(70,manBean); list.add(30, manBean); list.add(170,manBean); list.add(65,manBean); list.add(40, manBean); list.add(165,manBean); list.add(120,manBean); for(int i=0; i<list.size(); i++){ System.out.println("太郎さんの"); System.out.print("年齢は" +list+"歳です。"); System.out.print("身長は" +list+"センチです。"); System.out.print("体重は" +list+"キロです。"); System.out.println("一郎さんの"); System.out.print("年齢は" +list+"歳です。"); System.out.print("身長は" +list+"センチです。"); System.out.print("体重は" +list+"キロです。"); System.out.println("二郎さんの"); System.out.print("年齢は" +list+"歳です。"); System.out.print("身長は" +list+"センチです。"); System.out.print("体重は" +list+"キロです。"); } }

}

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

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

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

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

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

y_waiwai

2019/03/24 02:18

エラーメッセージを、そのままの形で(コピペして)提示してください
0516bz

2019/03/24 02:25

@y_waiwai さん Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 25, Size: 0 at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:665) at java.util.ArrayList.add(ArrayList.java:477) at Main.main(Main.java:14) 上記のように表示されます。
nskydiving

2019/03/24 02:28

ManBean クラスのコードも提示してください。 あとコードを提示するときは、見やすくするために以下の code タグを使ってください。 ```java ここにコードを書きます。 ```
0516bz

2019/03/24 03:26

@nskydiving さん public class ManBean { public int age; public int height; public int weight; public ManBean(int age, int height, int weight) { System.out.println(age); System.out.println(height); System.out.println(weight); } public void setAge(int age) { this.age = age; } public void setHeight(int height) { this.height = height; } public void setWeight(int weight) { this.weight = weight; System.out.println("体重は"+weight+"kgです"); } public int getAge() { return age; } public int getHeight() { return height; } ```java public int getWeight() { return weight; } ``` です。
m.ts10806

2019/03/24 03:47

質問は編集できますので。
guest

回答2

0

ベストアンサー

私のほうで、各所を変更させていただきました。

Java

1// Main.java 2import java.util.ArrayList; 3 4public class Main { 5 public static void main(String[] args) { 6 ArrayList<ManBean> list = new ArrayList<ManBean>(); 7 8 list.add(new ManBean(30, 170, 65)); // 太郎さん 9 list.add(new ManBean(20, 178, 70)); // 一郎さん 10 list.add(new ManBean(10, 140, 43)); // 二郎さん 11 12 System.out.println("太郎さんの"); 13 System.out.print("年齢は" + list.get(0).getAge() + "歳です。"); 14 System.out.print("身長は" + list.get(0).getHeight() + "センチです。"); 15 System.out.println("体重は" + list.get(0).getWeight() + "キロです。"); 16 System.out.println("一郎さんの"); 17 System.out.print("年齢は" + list.get(1).getAge() + "歳です。"); 18 System.out.print("身長は" + list.get(1).getHeight() + "センチです。"); 19 System.out.println("体重は" + list.get(1).getWeight() + "キロです。"); 20 System.out.println("二郎さんの"); 21 System.out.print("年齢は" + list.get(2).getAge() + "歳です。"); 22 System.out.print("身長は" + list.get(2).getHeight() + "センチです。"); 23 System.out.println("体重は" + list.get(2).getWeight() + "キロです。"); 24 } 25}

Java

1// ManBean.java 2public class ManBean { 3 private int age; 4 private int height; 5 private int weight; 6 7 public ManBean(int age, int height, int weight) { 8 this.age = age; 9 this.height = height; 10 this.weight = weight; 11 } 12 13 public void setAge(int age) { 14 this.age = age; 15 } 16 17 public void setHeight(int height) { 18 this.height = height; 19 } 20 21 public void setWeight(int weight) { 22 this.weight = weight; 23 } 24 25 public int getAge() { 26 return age; 27 } 28 29 public int getHeight() { 30 return height; 31 } 32 33 public int getWeight() { 34 return weight; 35 } 36} 37

###変更1
まず、ManBeanクラスについてです。
コンストラクタをセッターとして、機能するようにしました。

Java

1public ManBean(int age, int height, int weight) { 2 this.age = age; 3 this.height = height; 4 this.weight = weight; 5}

質問者さんが、System.out.println()が必要と思うならば、付け加えてください。

###変更2
Listには、同じ manBean のデータが add されていたので、コンストラクタを使って初期化しながら、三人のデータを add しました。

Java

1list.add(new ManBean(30, 170, 65)); // 太郎さん 2list.add(new ManBean(20, 178, 70)); // 一郎さん 3list.add(new ManBean(10, 140, 43)); // 二郎さん

###変更3
質問者さんは、System.out.print("年齢は" +list+"歳です。");と、お書きしていましたが、それでは、うまく表示されないでしょう。
List は、配列のように、get() メソッドを通して、中の値を得ます。(list.get(0).getAge()など。)

###結果
エラーの解消以外にも、口出ししてしまいましたが…
実行結果は、こうなりました。

太郎さんの 年齢は30歳です。身長は170センチです。体重は65キロです。 一郎さんの 年齢は20歳です。身長は178センチです。体重は70キロです。 二郎さんの 年齢は10歳です。身長は140センチです。体重は43キロです。

投稿2019/03/24 08:42

編集2019/03/24 08:46
nobadag

総合スコア37

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

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

0

java

1list.add(25, manBean);

addメソッドの第1引数にintが入ると、「その位置に第2引数を加える」という処理になります。
作成されたばかりのArrayListは要素数0なので、「25番目」などは存在しません。
そのため例外が発生します。

というか、この25とかは何の数値なのでしょう?

投稿2019/03/24 03:12

swordone

総合スコア20651

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

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

0516bz

2019/03/24 03:24

@swordone さん 回答ありがとうございます。 25は年齢の値として入力していました。 どのように変更したらよろしいでしょうか?
swordone

2019/03/24 03:48

じゃあそのBeanのオブジェクトに詰めなきゃ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問