🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

Q&A

解決済

1回答

4425閲覧

標準入力で受け取ったパラメーターを二次元配列に入れて出力させたい。

mikannn

総合スコア5

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

0グッド

0クリップ

投稿2021/02/24 06:34

編集2021/02/24 07:21

標準入力で受け取ったパラメーターを二次元配列にいれて出力させたいです。実行してみて、エラー文はでませんでしたが、値が出ずに、空白で表示されます。原因が分からず詰まっております。
221
3
までは出るのですが、6 0 7 0 8 0を二次元配列を出したいです。しかし、 6 0 7 0 8 0の二次元配列に入れている部分が空白で表示されます。
6 0
7 0
8 0
を二次元配列にいれて出力させたいです。

標準入力で入れるパラメーター
2 2 1
3
6 0
7 0
8 0

望む結果
2 2 1
3
6 0
7 0
8 0

自分の結果
221
3

処理がここまで来てる
になり、二次元配列の部分だけが出力されず何が原因かが分かっていません。

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 7 int[] numbers = new int[3];//int型の要素を代入する配列numbersを用意 8 9 //forループを回して、nextInt()でスペースの直前の数字をnumbersに代入していく 10 for(int i=0; i<numbers.length; i++){ 11 numbers[i]=sc.nextInt(); 12 System.out.print(numbers[i] ); 13 } 14 System.out.println(); 15 16 int N = sc.nextInt(); 17 System.out.println(N); 18 19 int n = sc.nextInt();//行数を取得する 20 int m = sc.nextInt();//スペース区切りで入力される一行あたりの数字の数を取得する 21 22 int[][] table = new int[n][m];//二次元配列を用意する 23 24 for(int i = 0; i < n; i++){ 25 for(int j = 0; j < m; j++){ 26 System.out.print("table[" + i + "]["+ j + "] = "); 27 table[i][j] = sc.nextInt(); 28 System.out.print(table[i][j]); 29 } 30 System.out.println(""); 31 } 32 System.out.println("処理がここまで来てる"); 33 } 34}

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

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

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

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

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

dodox86

2021/02/24 06:54 編集

こういう場合、入力の値のそれぞれがどういうもので、どう加工したものが出力なのか詳しく示さないと質問の読んだものには正しい答えが分かりません。 > 2 2 1 > 3 > 6 0 > 7 0 > 8 0 に対して、単に間の空白を除去したいだけですか? そうであるなら必ずしも2次元配列である必要はありません。それとも、あくまで2次元配列にいったん収めて出力したいということでしょうか。
mikannn

2021/02/24 07:05

返信頂きありがとうございます。質問の内容が分かりずらく申し訳ありません。 二次元配列にいったん収めて出力させたいです。 入力の値は、標準入力で受け取った値をこの後使う予定なのですが、二次元配列に収めてから出力させる方法がわからないです。
dodox86

2021/02/24 07:14 編集

もう一度書きますと、入力値のそれぞれの値の意味が分かりません。その為、ご提示のコードもそれぞれの意味を反映したものになっているかどうか判断できず、正しい処理も分かりません。 例えば入力の2行、 > 2 2 1 > 3 この内1行目の「2 2 1」のひとつひとつの意味は分からず、また、2行目の「3」は、その行の後にデータが3行続くことを示していそうに思えますが、コードはそうなっていない、あるいはそうしようとしているが不完全なように見えます。
momon-ga

2021/02/24 07:19

現在の標準入力で > int m = sc.nextInt(); の部分で設定される値は、いくつになると想定していますか?
mikannn

2021/02/24 07:32 編集

momon-gaさん 返信して頂きありがとうございます。m =2だと想定しています。 6 = [0][0] 0 = [0][1] 7 = [1][0] 0 = [1][1] 8 = [2][0] 0 = [2][1] に格納されると考えています
mikannn

2021/02/24 07:28

dodox86 さん 2 2 1 はJavaの問題集で後の課題で使うためにある値です。 3はご指摘の通り、後の 6 0 7 0 8 0 の行数を表しています。 ご指摘ありがとうございます。
momon-ga

2021/02/24 07:28

あら・・・ でも、221、3が表示されているので。 System.out.print(numbers[i] ); と System.out.println(N); のあとで、入力されているのは 6 0 なので、0では?
momon-ga

2021/02/24 07:34

標準入力を 2 2 1 3 3 2 6 0 7 0 8 0 のように修正する予定?
mikannn

2021/02/24 07:45

返信頂きありがとうございます。おしゃってように、Nのあとに入力された値が二次元配列の大きさに決める物にはいっていました。そのため、出力されてなったと考えられます。助言ありがとうございます。
guest

回答1

0

ベストアンサー

配列の定義がおかしいです。
上のプログラムを実行すると、各変数の値は…
numbers[] = {2, 2, 1}
N = 3
n = 6
m = 0
となります。

配列の定義は、 int[][] table = new int[n][m]; となっているので
値を当てはめると int[][] table = new int[6][0]; となり
サイズ0の配列を定義したことになります。

また m = 0であることから for(int j = 0; j < m; j++) のループにも入りませんね。

投稿2021/02/24 07:23

Luice

総合スコア771

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

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

mikannn

2021/02/24 07:42

返信頂きありがとうございます。指摘して頂いたように、 System.out.println(table.length); System.out.println(table[0].length); で調べた所、上記(int[][] table = new int[6][0];)のようになっていました。 値が出なかったのはそのためだとかんがえられます。ありがとうございました。
Luice

2021/02/24 07:50

後学の為にデバッグツールを使えるようになることをおすすめします。 Javaに限らず大抵の言語で開発を行う際に使用します。 JavaならVSCode, Intellij, Eclipseをはじめ、大抵の開発ツールに搭載されています。
mikannn

2021/02/24 07:57

調べて試させて頂きます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問