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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

1621閲覧

ArrayListを使わず要素数を増やすには?

prprprpr

総合スコア1

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/09/04 21:35

前提・実現したいこと

ArrayListなどのコレクションを用いずに、実行されるたびに要素数をひとつづつ増やし、新しい数値を配列に追加するメソッドを作成したいです。
申し訳ないのですが元の課題となっているコードも載せたいのですが、出題元から禁止されているためできません。

試したこと

調べた限りarraycopyを利用することで、要素数を疑似的に増やせることはわかりましたが、実行されるたびに要素数を増やすコードが思いつきませんでした…

補足情報

初心者かつ独学のため基礎的な部分で勘違いがあれば申し訳ありません。
不足している情報があればできる限り追加いたしますのでご協力お願いします。

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

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

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

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

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

Zuishin

2020/09/04 21:39

他人に答えを聞くことは禁止されていないんですか?
prprprpr

2020/09/04 21:51

極力自分で考えるべきだとは思いますが禁止はされていません!そのため問題の一部分でどうしてもわからない部分を質問させていただいております。 そのためご協力いただけるとありがたいです!!
Zuishin

2020/09/04 21:56

コードを載せることはなぜ禁止されているんですか?
prprprpr

2020/09/04 22:00

質問で返して申し訳ないのですがそれは回答のために必要な質問でしょうか?
Zuishin

2020/09/04 22:07

コードを公開することが禁止されている場合、こちらが作って公開したコードをあなたは使うことができません。それは公開されたコードだからです。
m.ts10806

2020/09/04 22:21

本当に禁止されてないかどうか確認した方が良いですよ。勝手な解釈は身を滅ぼします。
prprprpr

2020/09/04 22:31 編集

ややこしくて申し訳ありません。質問自体は課題に使えるかもしれない程度なので、ほとんど関係はありません。 ただ自分が疑問を持った元となる課題が掲載できないため、自分の質問がまとはずれになるかもしれないと考え記載しただけです。勘違いさせてしまう内容だったため修正いたしました。 ちなみに掲載禁止についてはその資料の表紙に転載禁止と書いてあっただけです。
Zuishin

2020/09/04 22:27 編集

では私の回答のようなコードでも特に問題はありませんね? 完全に動作することを確認しています。
guest

回答3

0

ベストアンサー

Java

1import java.util.stream.IntStream; 2 3public class IncrementableArray { 4 public int[] array = new int[0]; 5 6 public void add(int ... values) { 7 array = IntStream.concat(IntStream.of(array), IntStream.of(values)).toArray(); 8 } 9 10 public void printAll() { 11 IntStream.of(array).forEach(System.out::println); 12 } 13 14 public static void main(String[] args) { 15 var incrementableArray = new IncrementableArray(); 16 17 incrementableArray.add(2, 5, 3); 18 incrementableArray.printAll(); 19 20 System.out.println("---"); 21 22 incrementableArray.add(7); 23 incrementableArray.printAll(); 24 } 25} 26

投稿2020/09/04 22:25

Zuishin

総合スコア28669

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

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

prprprpr

2020/09/04 22:49

ありがとうございます!util関係はまだまだなので試してみます!
guest

0

独学で課題とか禁止とかってどういう事だろう?

とりあえず、簡単なのでは、要素の一つ一つをクラスにして、各クラスに要素のデータと、自クラスの参照をもたせる。
新しい要素を追加する時は、新しいインスタンスを生成して、そこにデータを収め、最後のインスタンスの自クラスのフィールドに参照を記録させて
ひと繋ぎにする。
みたいな感じで自前でリスト構造を作ってしまうとか。

投稿2020/09/04 22:09

amiya

総合スコア1218

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

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

prprprpr

2020/09/04 22:51

ありがとうございます!!自分の課題的には自前でリスト構造を作るというのが活用できそうなので調べてみます! 禁止等に関しては質問とはほとんど関係ないのに自分が記載してしまったので無視していただけると幸いです。
m.ts10806

2020/09/05 00:18

自分(回答者)が何かに巻き込まれる可能性もあるので無視するわけにはいかないですよ。中には「質問サイトで質問するのも禁止。ヒントを与えた人も同罪」とするところもありますから。
guest

0

「実行されるたびに要素数をひとつづつ増やし、新しい数値を配列に追加する
メソッド」を、次のコードを参考に作成できませんか?

Java

1class Test { 2 public static void main(String[] args) { 3 int[] a = { 31, 41, 59 }; 4 5 int[] b = new int[a.length + 1]; 6 System.arraycopy(a, 0, b, 0, a.length); 7 b[a.length] = 26; 8 a = b; 9 10 for (int e : a) System.out.print(" " + e); 11 System.out.println(); 12 } 13}

投稿2020/09/05 05:13

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問