2013-03-24 26 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);} 
     }