-6

私の問題は、を使用して配列リストを作成したcaseため、値は条件付きですが、コンパイラーは「孤立したケース」があると不平を言います。なんで?

ArrayList<Integer> object = new ArrayList<Integer>();{
        case objid == 1:{
        object.add(objnum);
        object.add(objx);
        object.add(objy);}
4

3 に答える 3

4

case声明なしに声明を持つことはできませんswitch

次のようなswitchステートメント:

switch (var) {
case 0:
  doSomething();
  break;
case 1:
  somethingElse();
  break;
default:
  anotherThing();
  break;
}

と(おおよそ)同等です

if (var == 0) {
  doSomething();
} else if (var == 1) {
  somethingElse();
} else {
  anotherThing();
}

だから、言っても意味がないのと同じように

if (0) {
  doSomething();
} // ...

caseまた、比較対象のないステートメントを使用しも意味がありません。この意味で、caseステートメントには親switchステートメントがないため、Java はそれがorphanedであると言います。

コードを次のように変更できます。

if (objid == 1) {
    object.add(obnum);
    object.add(objx);
    object.add(objy);
}

switchステートメントの詳細については、このドキュメントを試してください。

于 2013-03-24T19:58:56.127 に答える
1
case objid == 1:{
    object.add(objnum);
    object.add(objx);
    object.add(objy);
}

これは有効な Java ではありません。ifそうですか?

if (objid == 1) {
    object.add(objnum);
    object.add(objx);
    object.add(objy);
}

2 番目の質問に答えるにArrayListは、通常、そのメンバーに直接アクセスできなくなった場合にのみ使用する必要があるため、x = object.get(3).

于 2013-03-24T20:00:39.600 に答える
0
ArrayList<Integer> object = new ArrayList<Integer>();
switch (objid) {
  case 1:
  {
     object.add(objnum);
     object.add(objx);
     object.add(objy);}
  }   
于 2013-03-24T20:11:45.883 に答える