2017-07-03 53 views
-2

我有這個類,一個我還不明白的問題。我有一些疑問。Java。使用字符裏面和開關

  • Java所在鑄造焦炭爲int(我知道字符是數字類型,但在開關情況下,我有int和char值)
  • 爲什麼情況1,如果開關後置,在「我設定值1,不執行「變量。由於++運算符,我認爲在第一次迭代中我的值爲1。
  • 爲什麼第2種情況是先執行還是我如何在沒有得到1之前得到2值?我看到的第一個迭代打印1.

這的默認代碼:

public class ForSwitch { 
    public static void main(String args[]) { 
     char i; 
     LOOP: for (i = 0; i < 5; i++) { 
      System.out.println("For: i value: " + (int) i); 
      switch (i++) { 
      case '0':System.out.println("A"); 
      case 1:System.out.println("B");break LOOP; 
      case 2:System.out.println("C");break; 
      case 3:System.out.println("D");break; 
      case 4:System.out.println("E"); 
      case 'E':System.out.println("F"); 
      default:System.out.println("Switch: i value: " + (int) i); 
      } 
     } 
    } 
} 

輸出是這樣的:

For: i value: 0 
Switch: i value: 1 
For: i value: 2 
C 
For: i value: 4 
E 
F 
Switch: i value: 5 
+0

' 1!='1''。嘗試打印他們兩個:'int a = 1; int b ='1'; System.out.printf(「%d%d」,a,b);'。 –

+0

你每循環增加你的i計數器兩次。不要打開'i ++',只需使用'switch(i)'。增量已經發生在for循環中。如果你打算這樣做,考慮到我++會增加評估switch語句。請參閱:https://stackoverflow.com/questions/1094872/is-there-a-difference-between-x-and-x-in-java –

+0

'switch(i ++)' - >使用「舊」值'我''決定使用哪個'case',然後增加'i' – UnholySheep

回答

2

它的等效

for (int i = 0; i < 5; i = i + 1) { 
    int j = i; 
    i = i + 1; 
    switch (j) { 
     case 48: System.out.println("A"); 
     case 1: System.out.println("B");break LOOP; 
... 
+0

感謝@ rustot,我認爲我現在可以看到「路徑」,無論如何,我還有一個小問題。爲什麼第一次迭代打印默認值1,但不執行1例?可能是這種情況下的句子與增量前的i值進行比較,但是i var的使用增加了嗎?對不起,我的英文 – Genaut

+0

在第一個循環j == 0(因此它跳轉到'默認'分支),但我== 1(和它打印在'默認') – rustot