开关语句和大小写

Switch Statement and Case

我正在为我的 CPSC class 编写代码,我必须打印一个为 int 设置的案件编号。当我输入“2”时,代码打印了八次 "two potato" 而不是 "One potato, two potato".

这是我的代码:

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-loop,但不太确定,因为我在这里寻求帮助。提前致谢!

因为c % 8 (2 % 8 = 2),所以每次循环都会执行case 2,打印two potato。您可以改用 i % 8

这段代码是...奇特的:

主要问题是您没有使用在 for 循环中递增的 i 变量。相反,您使用的是 c 变量:

switch (c % 8)

应该是:

switch (i % 8)

您不需要 case 8,因为 i % 8 不可能得到 8。而且,看起来您根本不需要 c 变量。

这应该可以解决问题。正如其他人所说,您应该使用 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;
    }
}