【问题标题】:Switch Statement and CaseSwitch 语句和大小写
【发布时间】:2016-02-24 02:49:22
【问题描述】:

我正在为我的 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; 
        }
    }


}
}

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

【问题讨论】:

  • 为什么需要'for'循环?
  • for 循环的意义何在?你永远不会使用循环变量i。
  • 教授说要把 switch 语句放在一个循环中,这个循环可以正确地计算 int 计数器。我认为 for 循环会起作用,如果有更好的解决方案,请告诉我。
  • 你的循环中有i,但你的开关中有c。为什么% 8?
  • 我正在举一个教授给我的例子,其中包含 %8

标签: java for-loop int switch-statement


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这段代码……很奇怪:

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

      switch (c % 8)
      

      应该是:

      switch (i % 8)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-30
        • 2013-04-21
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        相关资源
        最近更新 更多