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

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

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

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

Q&A

解決済

6回答

2322閲覧

java Loop問題でどうして 4と7になるのかわかりません

kentros511

総合スコア122

Java

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

0グッド

0クリップ

投稿2016/12/07 01:30

編集2016/12/07 02:56

翔泳社 Java silver 問題集 模擬問題19

java

1class loopControl { 2public static void main(String [] args) { 3int[][] ary = {{ 1,2,3}, {4, 5, 6} ,{7, 8, 9}}; 4label: 5for(int i = 0;; i++) { 6for(int j = 0;; j++) { 7continue label; 8} 9System.out.print(ary[i][j]); 10if(i == 2) { 11break label; 12} 13} 14} 15} 16} 17 18 ``` 19###聞きたいこと 20int[][]の二次元なのになぜ{1,2,3} {4,5,6} {7,8,9}3つでエラーが起きないのか 21int i =0;; intj=0;;;;とはどう意味なのか 22・labelはループでどのような働き方をするのか 23・教えていただけますでしょうか。

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

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

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

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

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

guest

回答6

0

今までの質問を見た上ではっきり言いますが、本なり先生につくなりで、一度体系的に学び、そして実際にプログラムを書いてみることをおすすめします。

今回の質問にあるような、

  • 配列の要素数と次元数の違い
  • forの構文

などはかなり基本的なところなので、それを理解しないまま進もうとしても、地盤がしっかりしないところに家をたてるようなもので、うまく行きません。

投稿2016/12/07 01:49

maisumakun

総合スコア145183

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

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

0

今までの回答を全く受け入れていないということがよくわかりました。
あなたがここで「質問」しているのは問題を解消しようとしているのではなく、「わかんねーんだから仕方ねーだろ」というのがにじみ出ています。

「Java 入門」などで検索すると例えばこのようなサイト(マンガで分かる Java入門講座)がヒットします。
本に限らず、近年ではこのように入門に関してはネットの情報もあふれています。本当にやる気があるならこのように手段には事欠きません。
この質問の大半がここの解説で解決するはずです。

投稿2016/12/07 01:58

編集2016/12/07 02:31
swordone

総合スコア20651

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

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

0

オラクル認定資格教科書 Javaプログラマ Silver SE 8 スピードマスター問題集の問題文のコピペですね。

ちゃんと翔泳社から文書の公開の許諾は得ましたか?

投稿2016/12/07 02:01

ishi9

総合スコア1294

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

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

kentros511

2016/12/07 02:35

失礼いたしました
swordone

2016/12/07 02:38 編集

出典を明記しての「引用」ならまだいいのですがね。
kentros511

2016/12/07 02:48

つぎはこのようなことがないようにします
guest

0

ベストアンサー

動きだけ書いてみました。プログラムを見ながら動きをたどってもらえればと思います。

ary[][]の中身
配列 j 0 → 2
i
0  1 2 3
↓ 4 5 6
2 7 8 9

↓ここからFor文スタート↓
i = 0
j = 0

continue label

i = 1
j = 0

System.out.print 4

i = 1
j = 1

continue label

i = 2
j = 0

System.out.print 7

i = 2
j = 1

break label;

↑ここまで↑

これは数値の「47」ではなく、「4」「7」がくっついた形になります。
(System.out.printには改行がないため連続で出力されます)

参考になれば幸いです。

投稿2016/12/07 02:33

編集2016/12/07 02:41
SASAHARA

総合スコア247

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

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

0

  • int[][]の二次元なのになぜ{1,2,3} {4,5,6} {7,8,9}の3つでエラーが起きないのか

3×3の二次元配列なので何も問題ありません。二次元とは要素が2つという意味ではありませんよ。

  • int i =0;; intj=0;;の;;とはどう意味なのか

for文でよく見かける形はfor(int i = 0; i < array.length; i++){}だと思います。
この括弧の中身は、(前処理;終了条件;変化処理)というような感じです。実際に実行される流れとしては、
前処理→終了条件確認→ループ1回目→変化処理→終了条件確認→ループ2回目→変化処理→終了条件確認→……
となります。ここでint i = 0;; i++とは、終了条件が空だということです。こうすると無限ループになるので、別途breakでループを終了する必要があります。

  • labelはループでどのような働き方をするのか

breakやcontinueは通常、多重のfor文やwhile文で最も内側のブロックのみから抜け出します。
質問にあるコードなら、最初i = 0, j = 0のときlabelがなければ、continueの次はi = 0, j = 1のループが始まります。
しかしlabelがあることで、continue label;label:のついている外側のfor文の次のループを開始します。なので、i = 0, j = 0の次はi = 1, j = 0のループになります。

  • どうして4と7に答えがなるのか

上に書いたように、i = 0のループではSystem.out.println(ary[i][j]);が実行される前にcontinue label;でi = 1になってしまいます。
i = 1, j = 0ではary[i][j]が出力されて、次のi = 1, j = 1のときにまたcontinue label;でi = 2になります。
i = 2, j = 0のとき、System.out.println(ary[i][j]);が実行された後、i == 2なのでbreak label;が実行されます。breakなので、labelのついた外側のfor文が終了されて、mainメソッド全体が終了となります。
以上から、i = 1, j = 0とi = 2, j = 0の2回だけary[i][j]が出力されるので、結果4と7が表示されます。

投稿2016/12/07 02:10

takara7

総合スコア107

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

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

swordone

2016/12/07 05:38

×終了条件 ○継続条件
guest

0

そもそも多重 for ループから continue で一番外側のループを繰り返させるとか、終了条件を書かずに break で脱出するとか、あまり素直な記述じゃないですね。
引っかけようとしている、ある意味意地悪な課題です。
※実際にこういうコード書いてたらまず見直せ、って文句言われますな

むろん、ループの挙動を理解するという意味ではいい課題なのかもしれませんけど。

投稿2016/12/07 01:56

tacsheaven

総合スコア13703

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

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

maisumakun

2016/12/07 02:21

別な回答にもあるように、重箱の隅をつつくような試験問題を意識したコード例のようです。
tacsheaven

2016/12/07 02:24

ですね。認定試験のような、理解度を問う試験としてはいい試験だとは思います。 実際の現場でこんなの書いてたらダメ出ししますけど(w
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問