それはこの1つのようなコードの断片を書くために、最近私に起こった:その後このJavaコードの意味は何ですか?
switch (x) {
case a: case b: case c:
// do something
break;
case d: case e: case f:
// do something
break;
}
、私は間違って持って、構文エラーと同様のコードを書いた:私は、ケースのキーワードを書くのを忘れ:
switch (x) {
case a: b: c:
// do something
break;
case d: e: f:
// do something
break;
}
この構文は実際には有効なであり、スイッチはすべての値を通過します。
実際には、構文エラーは発生しませんでしたが、スイッチをスムーズに実行していたプログラムで間違った動作があったため、caseキーワードなしの値が欠けていました。
なぜですか? bは何をするのですか? c :, e:とf:2回目の切り札の平均?
多分ラベルですか?そして、彼らはどうすれば同じ行にいるのでしょうか?私はこの奇妙な非エラーの背後にある私が理解していないことは何が分からないのですか?
編集:実際にはのラベルのようです。それは珍しいことであり、@ Bathshebaが説明したように、問題はラベルが一般に行の先頭にあるということです。どのようにJavaがそのような混乱を(私の考えでは)シンタックスで許可するのか、警告を表示しなくても奇妙です。 これは長いプログラムで本当にたくさんの混乱と奇妙なエラーを引き起こす可能性があります。
ありがとうございます。
10秒で-2が得られた理由を知ることができますか?この質問で何が間違っていますか?私は、Javaのシンタックスについてもっと深く理解しようとしています。 –
私はこの質問が好きです。良いコードスニペットでうまくいきます。 – Bathsheba
グーグルで「スイッチの仕組みがどのように機能するのか」という答えが得られたからです。基本的にあなたが質問した質問、なぜ構文が壊れているコードが動作していないのですか? Answer:構文が壊れています。 – DejaVuSansMono