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

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

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

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

Q&A

解決済

2回答

688閲覧

ArrayList<Integer>の生成について教えてください

lop000p

総合スコア29

Java

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

0グッド

0クリップ

投稿2021/11/15 10:56

Java

1import java.util.ArrayList; 2 3public class Player { 4 private ArrayList<Integer> player = new ArrayList<Integer>(); 5 public Player(int playerCount) { 6 this.player.add(playerCount); 7 } 8 9 public void listmake() { 10 ArrayList<Integer> player = new ArrayList<Integer>(); 11 } 12 13 public ArrayList<Integer> getPlayer() { 14 return player; 15 } 16} 17

Java

1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.Scanner; 4 5public class Board { 6 static Scanner sc = new Scanner(System.in); 7 public static void main(String[] args) { 8 System.out.println("何人でプレイしますか?"); 9 String input = sc.nextLine(); 10 int players = Integer.parseInt(input); 11 if (players > 1) { 12 Player allPlayer = new Player(players); 13 allPlayer.listmake(); 14 ArrayList<Integer> listPlayer = allPlayer.getPlayer(); 15 week++; 16 int computer = 0; 17 18 } 19} 20} 21

実装したいこと
BoardクラスでPlayerクラを生成するときにコンソールから入力された数字(String input = sc.nextLine())をPlayerクラスに渡し、
引数で入力された数字の分要素を持つArrayList<Integer>を作成したいです。

上記では、ArrayList<Integer>の要素0に引数で受けた数値が入ってしまうため、
例えば、引数で3と指定があった場合、ArrayList<Integer>の要素数を3つにしたい。([0][1][2])
調べても方法がわからなく教えていただきたいです。

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

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

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

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

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

Crimson_Tide

2021/11/15 12:36

> ArrayList<Integer>の要素0に引数で受けた数値が入ってしまう ご自分で入れるようにコードを作成していますよね。これは何のためでしょうか?必要なのですか?別にフィールドを用意しては駄目なのでしょうか? また要素数を3にしたい理由はなんでしょうか? 自分で要素0に値を入れておいて、要素数を引数の数にしたいという要件がとてもちぐはぐに感じます。
guest

回答2

0

ベストアンサー

ArrayList<Integer>の要素0に引数で受けた数値が入ってしまうため

こんすとらくたの「引数で受けた数値」 playerCountをplayerにadd()している。はじめplayerは空っぽ。そこにadd()したから、「要素0に引数で受けた数値が入」る。

java

1public class Player { 2 private final ArrayList<Integer> player = new ArrayList<Integer>(); 3 4 public Player(int playerCount) { 5 this.player.add(playerCount); 6 }

引数で3と指定があった場合、ArrayList<Integer>の要素数を3つにしたい。([0][1][2])

あなたがやりたいことは、おそらくこういうことなのでは、なかろうかと。

java

1 2import java.util.ArrayList; 3import java.util.stream.Collectors; 4import java.util.stream.IntStream; 5 6public class Player { 7 private final int playerCount; 8 private final ArrayList<Integer> player = new ArrayList<Integer>(); 9 10 public Player(int playerCount) { 11 this.playerCount = playerCount; 12 } 13 14 public void listmake() { 15 player.clear(); 16 player.addAll(IntStream.range(0, playerCount).boxed().collect(Collectors.toList())); 17 } 18 19 public ArrayList<Integer> getPlayer() { 20 return player; 21 } 22} 23 24class Hoge { 25 public static void main(String[] args) { 26 Player player = new Player(3); 27 System.out.println(player.getPlayer()); 28 // [] 29 30 player.listmake(); 31 System.out.println(player.getPlayer()); 32 // [0, 1, 2] 33 } 34} 35`

投稿2021/11/15 12:09

shiketa

総合スコア3990

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

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

lop000p

2021/11/16 04:02 編集

こんすとらくたの「引数で受けた数値」 playerCountをplayerにadd()している。はじめplayerは空っぽ。そこにadd()したから、「要素0に引数で受けた数値が入」る。 理解できました。ご教授頂きありがとうございます。
guest

0

Listでも件数以上追記しなければ良いだけのように思いますが、数にこだわるならint[]にされては。
newのときに入力した数を定義として投入。

投稿2021/11/15 11:21

m.ts10806

総合スコア80861

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

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

lop000p

2021/11/16 04:00

ご教授頂きありがとうございます。配列で試したところ、できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問