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

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

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

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

Q&A

解決済

4回答

1239閲覧

繰り返し処理について

setsuna_ephemer

総合スコア7

Java

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

0グッド

0クリップ

投稿2017/09/21 02:52

javaのプログラムの勉強をしているのですが、結果が112123になる意味が分かりません。最初のwhileでtrueを返して1が表示されて、インクリメントされてるんで、iは2になって、2で評価して2が表示されるんじゃないんですか?
宜しくお願いします。

public static void main(String[]args) {
int[]array = {1,2,3};
for (int num : array) {
int i = 1;
while (i <= num);
System.out.print(i++);
}
}
}

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

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

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

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

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

guest

回答4

0

これなら質問者様の想定通りに動くでしょう。
forループで毎周iが1で初期化されているためそのような動作になります。

Java

1public static void main(String[]args) { 2 int[]array = {1,2,3}; 3 int i = 1; 4 for (int num : array) { 5 while (i <= num); 6 System.out.print(i++); 7 } 8 } 9}

投稿2017/09/21 02:57

LouiS0616

総合スコア35660

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

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

0

forもwhileも繰り返し処理を行うプログラムです。
whileは与えられた条件式が真(true)の時、{}の中を繰りし実行します

下記はfor分の中でwhileが呼び出されているので、
1回目のforループ: i = 1, num = 1, whileのループ => 1が表示される(whileの中身は1回実行される)

2回目のforループ: i = 1, num = 2, whileのループ => 1が表示されて+1される、2が表示されて+1される(whileの中身は2回実行される)

3回目のforループ: i = 1, num = 3, whileのループ => 1が表示されて+1される、2が表示されて+1される、3が表示されて+1される(whileの中身は3回実行される)

なので、112123 と表示されます。

Java

1public static void main(String[]args) 2{ 3 int[]array = {1,2,3}; 4 for (int num : array) 5 { 6 int i = 1; 7 while (i <= num) 8 { 9 System.out.print(i++); 10 } 11 } 12}

投稿2017/09/21 03:08

mtdsnsk

総合スコア789

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

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

0

ベストアンサー

インデントが崩れて見づらいですが、ループが二重になっています。

Java

1int[] array = {1,2,3}; 2for (int num : array) { 3 int i = 1; 4 while (i <= num); 5 System.out.print(i++); 6 } 7}

外側のループでnumが1→2→3と変化していって、それの1回毎に内側のwhileループがまわります。

num=1のとき、インクリメントされればi=2となって、内側のループの条件に合わなくなり1回で終わります。

投稿2017/09/21 02:57

maisumakun

総合スコア145183

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

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

setsuna_ephemer

2017/09/21 03:10

なるほどです。二重ループだってことを見逃してました。ありがとうございました。
guest

0

最初のwhileでtrueを返して1が表示されて、インクリメントされてるんで、iは2になって、

そしてwhileの条件がfalseになります。なぜならnumは1のままなので。


質問文のコードコピペしたら動かなかったので適宜直してます。
例えば記号が全角になっていたり、while()の行に;ついていたり。

投稿2017/09/21 02:55

編集2017/09/21 03:00
ozwk

総合スコア13521

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問