• ベストアンサー

Javaのfor文による繰り返しを初心者に教えてく

ださい。 Java初心者です。 入門書のみで何とかがんばってるのですがつまずいているのでどなたか助けてください。 Userクラスを書き、Mainクラスに複数のnew User()を生成したいです。 そこで、 for(int ninzuu = 1; ninzuu<5; ninzuu++){ User ui = new User(); } のように記述しu1、u2、、と作りたいのですがだめみたいです。 どうすれば任意の数のUserを作れますか?

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

  • ベストアンサー
回答No.3

詳細は anmochi さんの記事を読んで頂くとして、 int ninzuuLng = 5; User[] users = new Users[ninzuuLng]; for(int ninzuu = 0; ninzuu<ninzuuLng; ninzuu++){ users[ninzuu] = new User(); } (例えば このように ninzuuLng 変数を使えば)データ数量の最大値を変更したい場合、ninzuuLng 変数の数値の変更だけで「配列、for ループ」の両方の最大値を変更できます。

oktakuto
質問者

お礼

まさに私がしたかったことを見透かされたかのような回答ありがとうございます。 anmochiさんの回答もシンプルでわかりやすかったのですが、ユーザー数を最初に入力して可変にしたかったのでまさにベストアンサーです。 ありがとうございます!!

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

こんなのでどうだろう。ninzuuの開始を1から0に変えている事に注意。 User[] users = new Users[5]; for(int ninzuu = 0; ninzuu<5; ninzuu++){ users[ninzuu] = new User(); } 先頭で「要素数が5であるUserというクラスの配列」を作っている。これはUserクラスのインスタンスを入れる5個の箱ができたと思ってほしい。あくまでも箱であり、この行ではUsersのインスタンスは何一つ作られていない。その次にfor文で0、1、2、3、4と数字をカウントアップしながらusersという箱にUserのインスタンスを入れていっている。 質問者のコードはfor文により4回Userが作られるがそれを入れる箱がfor文の中で作られては消えて行くために任意の数のインスタンスを作る事ができなかったのだ。 後はusers[1].getUserID()とか、添え字を使う事でこの5つのUserインスタンスを操作していけば良い。

oktakuto
質問者

お礼

素人の質問にもかかわらず早速の回答ありがとうございます! シンプルでわかりやすくすぐ実践できました。 また解決策のみならずなぜうまくいっていないのかまで教えてくださり、javaへの理解が少しだけかもしれないですが深まりました。 重ねてありがとうございます。

  • HNEX
  • ベストアンサー率62% (43/69)
回答No.1

配列やList(可変長配列)などを使うと良いでしょう // 配列の場合 User[] users = new User[5]; for (int i = 0; i < 5; i++) { users[i] = new User(); } // Listの場合 List<User> list = new ArrayList<>(); for (int i = 0; i < 5; i++) { list.add(new User()); }

oktakuto
質問者

お礼

配列のみでなく可変長配列という新しい知識ありがとうございます。 ただ、初心者の私には少し難しく、Userクラスに名前などをセットしたいのですがそれがうまくできそうにないのでシンプルな配列を使おうと思います。 次の機会にはぜひListを使ってみようと思います。 どちらにしてもありがとうございます。