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

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

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

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

Q&A

解決済

2回答

203閲覧

Java break 挙動

Chandler_Bing

総合スコア673

Java

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

0グッド

0クリップ

投稿2019/03/17 12:24

編集2019/03/17 12:31

Java

1public class Main { 2 3 public static void main(String[] args) { 4 5 int num = 321; 6 int temp = num; 7 8 String result = "3は含まれていません"; 9 10 while (temp > 0) { 11 if (temp % 10 == 3) { 12 result = "3が含まれています"; 13 break; 14 } 15 System.out.println("line"); 16 temp /= 10; 17 } 18 19 System.out.println(result); 20 System.out.println(temp); 21 } 22 23}

上記のプログラムでは表示結果は以下のようになります。

line line 3が含まれています 3

質問❶
break;に到達した時点でwhile文を抜け、System.out.println(result);にくるのでtempは321のままかと思ったのですが、whileは抜けないのでしょうか。for文がif文中にberakがあればfor文ごと抜けるのでしたっけ。

for文は以下のようになるのでifのbreakでfor文も抜けています。

Java

1 for (int i = 0; i < 10; i++) { 2 if (i == number) { 3 System.out.println(i); 4 System.out.println("終了します"); 5 break; 6 } 7 System.out.println("続きます"); 8 }
続きます 続きます 続きます 3 終了します

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/17 12:52

過去の質問で回答がついてるのにかいけつずみになってない質問がありますねー そっちをまずは解決させてくださいなー
guest

回答2

0

ベストアンサー

説明のため、行番号を付けます。

java

1 1: int num = 321; 2 2: int temp = num; 3 3: 4 4: String result = "3は含まれていません"; 5 5: 6 6: while (temp > 0) { 7 7: if (temp % 10 == 3) { 8 8: result = "3が含まれています"; 9 9: break; 1010: } 1111: System.out.println("line"); 1212: temp /= 10; 1313: } 1414: 1515: System.out.println(result); 1616: System.out.println(temp);

まず2行目でtempは321に初期化されます。
6行目whileの判定は321>0のためtrue。ループに入ります。
7行目ifの判定は321%10=1!=3のためfalse。ifブロックに入りません。
11行目で"line"が出力され、12行目でtemp=321/10=32に書き換わります。
6行目に戻りwhileの判定。32>0のためループに入ります。
7行目ifの判定は32%10=2!=3のためfalseでifに入りません。
11行目で"line"が出力され、12行目でtemp=32/10=3に書き換わります。
6行目に戻りwhileの判定。3>0のためループに入ります。
7行目ifの判定は3%10=3==3のためtrue。ifに入って7行目でresultが書き換わり、8行目によってループを抜けます。

書いたコード通りに動いてますよ?

投稿2019/03/17 13:08

swordone

総合スコア20651

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

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

Chandler_Bing

2019/03/19 09:45

ありがとうございます。なぜか321/10の余りが3だという思考になってました。ありがとうございます。
guest

0

tempはwhileの外で宣言されているので、whileループを抜けた後も計算結果を持ち続けます。

投稿2019/03/17 13:46

javahack

総合スコア1088

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問