みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

arraylistについて

arraylistの勉強をしています。
ここの掲示板他、いろいろなものを見たのですが、
解決できませんでした。
お時間ある方、是非教えてください。

ArrayListにPerson(自分で作ったクラス)を入れていきます。
そうすると、出力したときに、最後に入力したものしか、出力されません。
例えば、

何人分入力しますか?2
名前を入力してください:mori
moriさんですね
国語の点数は?:2
数学の点数は?:2
英語の点数は?:2

名前を入力してください:sita
itaさんですね
国語の点数は?:4
数学の点数は?:5
英語の点数は?:6

国語の平均は3点です。
数学の平均は3点です。
英語の平均は4点です。

sitaさんの平均点は5点です。
sitaさんの平均点は5点です。

という感じに最後に入力したものが人数分出力されます。

ロジックは下記のようになっています。
(全然意味のわからないものでしたらご指摘ください)

☆Syuukei.java☆

 ~省略~
    persondata.add(person);
  }

  System.out.println("国語の平均は" + (persondata..getKototal() / nin) + "点です。");
 ~省略~

Iterator ite = persondata.iterator();
while(ite.hasNext()){
  Person per = (Person)ite.next();
  System.out.println(per.getName() + "さんの平均点は" + (per.getSubtotal() / 3) + "点です。");


☆PersonData.java☆

import java.util.*;

public class PersonData extends ArrayList{

~省略~

public boolean add(Person person){
super.add(person);
kototal += person.getKo();
sutotal += person.getSu();
eitotal += person.getEi();
return true;
}

public int getKototal(){
return kototal;
}

~省略~

}

Person.javaは、gettersetterです。

よろしくお願いします。

投稿日時 - 2004-07-11 11:02:34

QNo.922223

困ってます

質問者が選んだベストアンサー

省略して書いてないところが問題でしょう。たぶん。
こんな感じで書いてませんか?

Person person;
for(人数分ループ) {

 /* ここで入力処理 */

 person.setKo(国語の点);
 person.setSu(数学の点);
 person.setEi(英語の点);
 persondata.add(person);
}

これだと同じ person を使いまわしてるのでダメです。
こんな風にしてみてください。

Person person = null;
for(人数分ループ) {

 person = new Person();

 /* ここで入力処理 */

 person.setKo(国語の点);
 person.setSu(数学の点);
 person.setEi(英語の点);
 persondata.add(person);
}

投稿日時 - 2004-07-11 11:19:05

補足

同じpersonを使いまわすと、
箱は一つだから、実際はその箱をみてるだけだから
、すべて最後に入力したものが出力される。
という考え方でよいでしょうか?

投稿日時 - 2004-07-11 11:27:24

お礼

SpiralGalaxyさんありがとうございます。
ぴったりでました。
私の勉強不足ですね(>_<)
ほんとうにありがとうございました!

投稿日時 - 2004-07-11 11:24:28

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>箱は一つだから、実際はその箱をみてるだけだから
>、すべて最後に入力したものが出力される。
>という考え方でよいでしょうか?

はい。そういうことになります。
その都度 new して別の箱を作ってやる必要があると思います。

>ぴったりでました。

そうですか(^^)良かったです。

投稿日時 - 2004-07-11 13:58:43

お礼

SpiralGalaxyさん!ほんとにありがとうございます。
私もここの質問に答えられるよう頑張ります!
(まだしばらくは質問側でしょうが(^^ゞ)

ありがとうございました~!!

投稿日時 - 2004-07-12 21:54:16

あなたにオススメの質問