我的问题是,我使用case
制作了一个arraylist,因此值是有条件的,但编译器抱怨我有一个“孤立的案例”。为什么呢?
ArrayList<Integer> object = new ArrayList<Integer>();{
case objid == 1:{
object.add(objnum);
object.add(objx);
object.add(objy);}
答案 0 :(得分: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
声明的详细信息,请尝试this document。
答案 1 :(得分: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)
之类的内容。
答案 2 :(得分:0)
ArrayList<Integer> object = new ArrayList<Integer>();
switch (objid) {
case 1:
{
object.add(objnum);
object.add(objx);
object.add(objy);}
}