我的问题是,我使用 a 创建了一个数组列表,case
因此值是有条件的,但是编译器抱怨我有一个“孤立的情况”。为什么?
ArrayList<Integer> object = new ArrayList<Integer>();{
case objid == 1:{
object.add(objnum);
object.add(objx);
object.add(objy);}
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
声明的更多信息,请尝试此文档。
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)
.
ArrayList<Integer> object = new ArrayList<Integer>();
switch (objid) {
case 1:
{
object.add(objnum);
object.add(objx);
object.add(objy);}
}