人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaの質問です。以下のようなコードがあるとします。

class Sample {
public static void main(String[] args) {
char type = 'A';
switch (type) {
case 'A' :
System.out.println("A 型");
case 'B' :
System.out.println("B 型");
case 'O' :
System.out.println("O 型");
}
}
}

このコードの出力結果は、「A型」「B型」「O型」、すべてが出力されるようです。
自分は「A型」しか出力されないと思ったのですが…解説がない問題でして、理由を考えても、どうも導き出せません。
なぜ「A型」「B型」「O型」すべてが出力されるのか、理由をお教えいただけないでしょうか。
よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:インターネット 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rsc
●300ポイント ベストアンサー

JavaでもCと同様に、switch(){}文中の「case 'A':」などは、ただのラベルなので、break文によって抜け出なければなりません。

※参考URL
http://kouki-hoshi.hatenablog.com/entry/2016/01/08/014635


moon-fonduさんのコメント
リンクありがとうございます。熟読してみまして、リンク先と同様、if文にして考えてみました。 public class Sample { public static void main(String[] args) { char type = 'A'; if (type == 'A') { System.out.println("A 型"); } else if (type == 'B') { System.out.println("B 型"); } else { System.out.println("O 型"); } } } になると思い、Eclipseで実行しても「A型」しか出力されないので、答えは「A型」だけと思いましたが。 違うのですね。お教えくださったリンク先の内容を参考にし、 class Sample { public static void main(String[] args) { char type = 'A'; if (type == 'A' || type == 'B' || type == 'C') { if (type == 'A' || type == 'B' ) { if (type == 'A') { System.out.println("A 型"); } System.out.println("B 型"); } System.out.println("O 型"); } } } と、書き換えまして、eclipse上で実行しますと。 A型 B型 O型 が、ちゃんと出力されました。 つまりcase文の中にbreakを記述しなかった場合、フォールスルーが実行される、"または"(or)となる条件が追加されていく…という認識で、正しいでしょうか?

rscさんのコメント
多分、いいと思います。

moon-fonduさんのコメント
ありがとうございます(^^;
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ