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

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

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

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

Q&A

解決済

3回答

225閲覧

Javaでのswitch文

Yhaya

総合スコア439

Java

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

0グッド

0クリップ

投稿2017/12/29 07:12

Javaの勉強をしています。ここで、下のようなswitch文が出てきました。

Java

1int val = 2; 2 3switch (val){ 4 case 1: 5 System.out.println(1); 6 case 2: 7 System.out.println(2); 8 case 3: 9 System.out.println(3);

これを実行すると2,3と出力されるのですがこれはなぜでしょう?

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

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

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

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

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

guest

回答3

0

switch文の機能としては、valの値で該当するcase ~:にジャンプして、そのままswitch文の最後まで全部実行するという事になっています。

途中でswitch文の外に抜け出たい場合はbreak;と書きます。

Java

1int val = 2; 2 3switch (val){ 4 case 1: 5 System.out.println(1); 6 break; 7 case 2: 8 System.out.println(2); 9 break; 10 case 3: 11 System.out.println(3); 12 break; 13}

投稿2017/12/29 07:20

otn

総合スコア84423

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

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

0

break忘れは初心者が陥る典型的なエラーです。
原因については既に回答がついていますが、逆に当該挙動を利用したサンプルをご紹介します。

月が入力されたら季節を表示する

if文を使った場合

Java

1if(month == 3 || month == 4 || month == 5) { 2 System.out.println("春です"); 3} 4else if(month == 6 || month == 7 || month == 8) { 5 System.out.println("夏です"); 6} 7else if(month == 9 || month == 10 || month == 11) { 8 System.out.println("秋です"); 9} 10else if(month == 12 || month == 1 || month == 2) { 11 System.out.println("冬です"); 12} 13else { 14 System.out.println("そんな月ありません"); 15}

switch文を使った場合(1)

Java

1switch(month) { 2case 3: 3 System.out.println("春です") 4 break; 5case 4: 6 System.out.println("春です") 7 break; 8case 5: 9 System.out.println("春です") 10 break; 11case 6: 12 System.out.println("夏です") 13 break; 14case 7: 15 System.out.println("夏です") 16 break; 17case 8: 18 System.out.println("夏です") 19 break; 20case 9: 21 System.out.println("秋です") 22 break; 23case 10: 24 System.out.println("秋です") 25 break; 26case 11: 27 System.out.println("秋です") 28 break; 29case 12: 30 System.out.println("冬です") 31 break; 32case 1: 33 System.out.println("冬です") 34 break; 35case 2: 36 System.out.println("冬です") 37 break; 38default: 39 System.out.println("そんな月ありません"); 40}

switch文を使った場合(2)

Java

1switch(month) { 2case 3: case 4: case 5: 3 System.out.println("春です"); 4 break; 5case 6: case 7: case 8: 6 System.out.println("夏です"); 7 break; 8case 9: case 10: case 11: 9 System.out.println("秋です"); 10 break; 11case 12: case 1: case 2: 12 System.out.println("冬です"); 13 break; 14default: 15 System.out.println("そんな月ありません"); 16}

非常に簡潔に、分かりやすく記述出来ました。
慣れないうちは罠となる挙動ですが、上手く使えるとこのように非常に便利な場面があります。

投稿2017/12/29 09:59

LouiS0616

総合スコア35658

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

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

0

ベストアンサー

breakがないからではないでしょうか?

Java の switch 構文落とし穴

投稿2017/12/29 07:16

namnium1125

総合スコア2043

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

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

Yhaya

2017/12/29 07:18

breakがないと「case 3:」も評価なしに実行されるということですか?
namnium1125

2017/12/29 07:19

はい。そうです。そう決められています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問