- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:switch文、break文と流れの制御について
)
switch文、break文と流れの制御について
このQ&Aのポイント
- JAVAのswitch文において、break文がない場合、入力した数字に関係なく、全ての条件に当てはまる処理が実行される。
- 例えば、1を入力した場合、case 1の処理が実行されるだけでなく、その後のcase 2, case 3, defaultの処理も順番に実行される。
- これは、switch文内の条件に一致するcaseの処理を実行した後、break文がないためにそのまま次の処理に進むためである。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
break文やreturn文が無い時にはbreak文やreturn文を探しながら実行が続けられます。この流れ込みの仕組みがあるのは、いくつかの条件に対する応答として同じ動作を行いたい場合があるからです。 例としては何月かという整数に対して日数を返す場合。 4月、6月、9月、11月は30日で同じですから case 4: case 6: case 9: case 11: return 30; このように書けます 質問者さんの例題の場合はcaseキーワードとbreak文を組にしていないと正しく動作しないのでバグになります。
その他の回答 (2)
- buriburi3
- ベストアンサー率44% (353/792)
回答No.2
制御構造はFORTRANの頃からある ON GOTO と同じです。 if (条件) { } else if (条件) { } の展開ではなく ON 値 GOTO CASE1,CASE2 CASE1: 文 CASE2: 文 の展開です。 なので switch( )には式ではなく値を入れますしcaseにも定数値を指定しますよね。 GOTO自体がJavaでは未実装(定義はされてる)ですので動きませんが if (n==値1) goto CASE1 ; if (n==値2) goto CASE2 ; CASE1: 文 ; CASE2: 文 ; のような実装だと思えばよいです。
- Wr5
- ベストアンサー率53% (2173/4061)
回答No.1
Javaでなく、C言語からの見地ですが…… 条件判定を行っているのはswitch()のところで1回だけです。 caseはただのラベルと思えばよいかと。 caseは「実行文」にはならない…と。 # だからといって脈絡もなくcaseが出てくるのはおかしいコトになりますが。