2016-02-24 178 views
-1

我正在爲我的CPSC類編寫代碼,並且必須打印最多爲int設置的案例編號。當我輸入「2」時,代碼打印「兩個馬鈴薯」八次而不是「一個馬鈴薯,兩個馬鈴薯」。Switch Statement and Case

這裏是我的代碼有:

public class Potato { 

public Potato() { 
} 

public void count(int c) {  


    for (int i = 0; i < 8; i++) { 
     switch (c % 8) { 
      case 1: System.out.println("One potato"); break; 
      case 2: System.out.println("two potato"); break; 
      case 3: System.out.println("three potato"); break; 
      case 4: System.out.println("four..."); break; 
      case 5: System.out.println("five potato"); break; 
      case 6: System.out.println("six potato"); break; 
      case 7: System.out.println("seven potato"); break; 
      case 8: System.out.println("more!"); break; 
      default: break; 
     } 
    } 


} 
} 

我想我的問題是我的for循環,也不太清楚不過,因爲我在這裏尋求幫助。提前致謝!

+0

爲什麼你需要'for'循環? – Agalo

+1

'for'循環的要點是什麼?你從不使用循環變量'i'。 –

+0

教授說,把switch語句放在一個正確計數int計數器的循環中。我認爲循環會起作用,無論如何,讓我知道是否有更好的解決方案。 –

回答

0

這應該可以做到。正如其他人所說,你應該使用i%8。然而,爲了這個工作,你還應該從i=1開始,因爲0%8 = 0。並且您的case 8應更改爲case 0

for (int i = 1; i <= c; i++) { 
    switch (i % 8) { 
     case 1: System.out.println("One potato"); break; 
     case 2: System.out.println("two potato"); break; 
     case 3: System.out.println("three potato"); break; 
     case 4: System.out.println("four..."); break; 
     case 5: System.out.println("five potato"); break; 
     case 6: System.out.println("six potato"); break; 
     case 7: System.out.println("seven potato"); break; 
     case 0: System.out.println("more!"); break; 
     default: break; 
    } 
} 
+0

真棒,這工作。謝謝! –

+1

高興地幫助:) –

1

這是因爲c % 8 (2 % 8 = 2),所以在每個循環中它將執行case 2並打印two potato。您可以改用i % 8

0

此代碼...奇特:

主要的問題是,你沒有使用i變量是在for循環遞增。取而代之的是,你正在使用c變量:

switch (c % 8) 

應該是:

switch (i % 8) 

你不需要case 8因爲沒有辦法,i % 8結果8.而且,看起來就像你不根本不需要變量c