2013-10-03 77 views
-2

這裏是我的代碼:switch語句只執行默認

public String toString() { 
     int mode = HomeScreenActivity.displayMode; 
     switch(mode){ 
     case 1: 
      return _id + ". " + lastName + " " + firstName; 
     case 2: 
      return _id + ". " + firstName + " " + mobileNumber; 
     case 3: 
      return _id + ". " + lastName + " " + mobileNumber; 
     default: 
      return _id + ". " + firstName + " " + lastName; 
     } 
    } 

的問題是,只有默認代碼工作。

我知道我可能錯過了一些愚蠢的東西,但我無法得到這個工作。

編輯:在toString()方法內打印不起作用,它不打印任何東西。但我不認爲這意味着它沒有運行,因爲這是我的接觸實際上是如何顯示在我的ListView,所以我不知道這是怎麼回事...

+4

確定顯示模式的值?您可以在switch語句之前打印出模式,還是在那裏設置斷點? – vikingsteve

+0

您可以在進入'switch'之前打印'mode'的值。它可能只是'mode'的值不是1,2或3. – Nikhil

+0

您確定'displayMode'在1-3範圍內? – TheKojuEffect

回答

-1

則必須使用換

public String toString() { 
    int mode = HomeScreenActivity.displayMode; 
    switch(mode){ 
    case 1: 
     return _id + ". " + lastName + " " + firstName; 
     break; 
    case 2: 
     return _id + ". " + firstName + " " + mobileNumber; 
     break; 
    case 3: 
     return _id + ". " + lastName + " " + mobileNumber; 
     break; 
    default: 
     return _id + ". " + firstName + " " + lastName; 

    } 
} 
+2

'return'在這裏完成與'break'相同的事情。 – Makoto

+1

因爲OP正在使用return語句,所以不需要使用break。 – SpringLearner

+0

我接受了這個答案,因爲有另一個switch語句決定了'HomeScreenActivity.displayMode'的值,並且我忘記了使用'break;'。在一個旁註中:爲什麼java在達到案件時不會中斷,通過它們的好處是什麼,我沒有看到這一點。 – Ogen

1

我有這個代碼在我的程序:

public void onClick(DialogInterface dialog, int which) { 
    which = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); 
    System.out.println("The display selected item numebr is " + which); 
    switch (which) { 
     case 0: 
      setDisplayMode(0); 
      displayChoice = 0; 

     case 1: 
      setDisplayMode(1); 
      displayChoice = 1; 
      break; 
     case 2: 
      setDisplayMode(2); 
      displayChoice = 2; 

     case 3: 
      setDisplayMode(3); 
      displayChoice = 3; 

    } 
} 

有沒有休息,所以情況3總是跑,這是displayChoice 3每次設置。所以我在每個案子結束時都加入了休息,並且它很有效。

+0

OP的case語句每個都有'return',所以不僅不需要'bre​​ak',而且由於代碼不可訪問而導致編譯錯誤。 – yshavit

+0

@yshavit我知道,我是OP,這個代碼與原始代碼不一樣,它的一個不同的switch語句沒有返回也沒有中斷。 – Ogen

-1

在這裏,你應該考慮兩件事情

  1. 您應該添加break語句。

  2. 在類型(int)範圍內切換(模式)。

+0

** No。**'return'完成與break相同的事情。 – Makoto