-6

我的问题是,我使用 a 创建了一个数组列表,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 说它是孤立的。

您可以将代码更改为:

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);
}

要回答您的第二个问题,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 回答