切换声明和案例

时间:2016-02-24 02:49:22

标签: java for-loop int switch-statement

我正在为我的CPSC类制作代码,我必须打印一个为int设置的案例编号。当我输入“2”时,代码打印“两个土豆”八次而不是“一个土豆,两个土豆”。

这是我的代码:

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; 
        }
    }


}
}

我认为我的问题是我的循环,但不太确定,因为我在这里寻求帮助。提前谢谢!

3 个答案:

答案 0 :(得分:1)

这是因为c % 8 (2 % 8 = 2),所以在每个循环中它都会执行case 2并打印two potato。您可以改为使用i % 8

答案 1 :(得分:0)

这段代码很奇怪:

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

switch (c % 8)

应该是:

switch (i % 8)

您不需要case 8,因为i % 8无法导致8.而且,看起来您根本不需要c变量。

答案 2 :(得分: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;
    }
}