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

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

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

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

Q&A

解決済

6回答

1326閲覧

Javaの配列についての質問です。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2017/04/12 23:55

いまJavaの配列について勉強していてこのような配列を作っています。

java

1String mondai[][] ={{"日本の首都は?","1: 東京都","2: 大阪府","3: 北海道"}, 2 {"long型変数のビット数は?","1: 16ビット","2: 32ビット","3: 64ビット"}};

実行結果はこのような表示でlengthを使って表示したいです。
日本の首都は?
1: 東京都
2: 大阪府
3: 北海道

日本の首都は?っていうのだけを表示するにはどのようなソースを書けばこのように表示されますでしょうか?初心者の質問ですいません。

一応自分で考えてみたコードも掲載しときます。(これでやるとすべて表示されません(泣))

java

1class Test{ 2 public static void main(String[] args){ 3 String mondai[][] ={{"日本の首都は?","1: 東京都","2: 大阪府","3: 北海道"}, 4 {"long型変数のビット数は?","1: 16ビット","2: 32ビット","3: 64ビット"}}; 5 for (int i = 0;i < mondai.length ; i++) { 6 System.out.println(mondai[0][i]); 7 } 8 } 9}

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

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

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

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

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

guest

回答6

0

答えは既に書かれているので省きますが、こういう場合文字列の配列としてもつのではなく、問題と答えを組み合わせた「設問」というモノ(=オブジェクト)と考えてみる、というのもあります。

Java

1class Setsumon { 2 string question; // 問題文 3 string[] answers; // 選択肢 4 string correct; // 正解の選択肢(answers のなかのどれかと equal) 5 6 Setsumon(string q, string[] a, string c) { 7 this.question = q; 8 this.answers = a; 9 this.correct = c; 10 } 11 12 public string getQuestion() { 13 return this.question; 14 } 15 16 public string[] getAnswers() { 17 return this.answers; 18 } 19 20 public boolean isCorrect(string answer) { 21 return this.correct.equals(answer); 22 } 23}

answers に入れるとき、あるいは取り出すときにランダムに並び変えるようにするとか、いろいろ考えてみるのもいいですよ。

投稿2017/04/13 00:58

tacsheaven

総合スコア13703

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

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

0

まず、forの条件について見ましょう。
表示されないということは、回数が間違ってるなどが原因です。
なのでmondai.lengthの数をまず見ます。
System.out.println(mondai.length);でいいでしょう。
これは2でした。
{"日本の首都は?","1: 東京都","2: 大阪府","3: 北海道"}

{"long型変数のビット数は?","1: 16ビット","2: 32ビット","3: 64ビット"}
2になります。
条件はi < mondai.lengthなので0< 2です。

for (int i = 0;i < mondai.length ; i++) { System.out.println(mondai[0][i]);

mondai[0][0]mondai[0][1]なので
日本の首都は
1: 東京都
になります。
ならば
mondai[0]の要素分を出したいのであればmondai[0]の長さを出せばいいのです。
というところで終わっておきます。

投稿2017/04/13 00:39

編集2017/04/13 00:40
toutou

総合スコア2050

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

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

0

勉強中とのことですのでヒントだけ・・・
for文の前でmondai.lengthの長さを出力してみて下さい。

Java

1System.out.println("mondai.length = " + mondai.length);

mondaiは配列(子配列)の配列(親配列)なので、子配列の長さも出してみましょう。

Java

1System.out.println("mondai.length[0] = " + mondai[0].length);

for文の正しい条件が見えてくると思います。

投稿2017/04/13 00:18

Clor

総合スコア883

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

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

0

二次元配列なので最初の行にある都市だけに限って言えば以下のようにすると表示できます。

java

1int row = 0; 2for (int i = 0; i < mondai[row].length; i++) { 3 System.out.println(mondai[row][i]); 4}

rowという変数を使いましたので、どのような意味や使い方になるのか参考にしてみてください。

投稿2017/04/13 00:13

KSwordOfHaste

総合スコア18394

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

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

0

簡潔に以下でどうでしょうか。

Java

1Arrays.stream(mondai[0]).forEach(System.out::println);

投稿2017/04/13 01:10

root_jp

総合スコア4666

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

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

0

ベストアンサー

質問文の様に出したいのであれば、

java

1for (int i = 0;i < mondai[0].length ; i++) { 2 System.out.println(mondai[0][i]); 3}

としてあげましょう。(mondaiの最初の(0番目)の配列の要素のlengthを使ってloopしています。)

投稿2017/04/13 00:13

motuo

総合スコア3027

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問