Blog12 of GrrrNeko BASE

このコーナーではデベロッパー向けに、私がハマってしまったポイントとその解決法を書いていきます。

2012-10-1

android: breakはループおよびスイッチの外側で使用できません

症状:

ループかスイッチをネスト(入れ子)しているとき、異なる階層で単に break; とだけやると、そのネストの全ての break; に対して発せられる。

解決法:

 break はそのループまたはスイッチを出てください、ということなのだが、ネストされている場合、「そこから離れてください!」と言われて、「そこ」ってどこよ?東京?日本?地球?太陽系?みたいなことになる。(平屋のときには言われない)

 そこで(全てのループにつける必要はないが、出口が必要な)ループの階層にラベルを付けてあげる。

 例えば、以下のように if 文を並列させる必要があるときなどは必須になるだろう(イメージなので文法は簡略化)

  • 生産国: if (海外) {
  • 「該当なし」を返す;
  • break 生産国
  • } else {
    • 排気量: if (2,000cc以下) {
    • 「国産小型」を返す;
    • break 排気量
    • } else {
    • 「国産大型」を返す;
    • break 排気量
    • 色: if (白) {
    • 「白」を返す;
    • break
    • } else if (黒) {
    • 「黒」を返す;
    • break
    • } else if ...

ページトップへ