2013-03-24 43 views
-5

我的问题是,我使用case作了一个arraylist,所以这些值是有条件的,但是编译器抱怨我有一个“孤立案例”。为什么?Arraylist中的案件投诉“孤立案件”

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

您是不是指'if'而不是'case'? – nkr 2013-03-24 19:56:04

+0

哦,所以它应该是如果?好吧谢谢:D解决了我的问题,我猜^^ – minisurma 2013-03-24 19:58:01

+0

sum1刚刚说过我以前我应该用案例,但okies :) – minisurma 2013-03-24 19:58:55

回答

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声明没有父项switch声明,所以Java说它是孤儿

你可以更改您的代码:对switch声明

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

欲了解更多信息,请this document

+0

Ty,真的很好的答案,但我刚刚删除了整个列表。我很愚蠢!不管怎样,谢谢你.. – minisurma 2013-03-24 20:06:30

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)

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