【问题标题】:Switch statement always selects same case [duplicate]Switch语句总是选择相同的情况[​​重复]
【发布时间】:2013-11-17 21:15:04
【问题描述】:

对于下面的switch语句:

如果选择了 0-9 之间的值,则输出正常。如果选择大于 9 的值,则输出始终为小写 z。

for (int i = 0; i < 3; i++)
    {
        random[i] = randomnumber.nextInt(36);
        if (random[i] > 9)
        {
            switch(random [i])
            {
            case 10: character[i] = "A";
            case 11: character[i] = "B";
            case 12: character[i] = "C";
            case 13: character[i] = "D";
            case 14: character[i] = "E";
            case 15: character[i] = "F";
            case 16: character[i] = "G";
            case 17: character[i] = "H";
            case 18: character[i] = "I";
            case 19: character[i] = "J";
            case 20: character[i] = "K";
            case 21: character[i] = "L";
            case 22: character[i] = "M";
            case 23: character[i] = "N";
            case 24: character[i] = "O";
            case 25: character[i] = "P";
            case 26: character[i] = "Q";
            case 27: character[i] = "R";
            case 28: character[i] = "S";
            case 29: character[i] = "T";
            case 30: character[i] = "U";
            case 31: character[i] = "V";
            case 32: character[i] = "W";
            case 33: character[i] = "X";
            case 34: character[i] = "Y";
            case 35: character[i] = "Z";
            }
        }
        else
            character[i] = Integer.toString(random[i]);

【问题讨论】:

  • 在每种情况下添加中断语句。
  • 顺便说一句,您可以通过对字符值进行一点加法来更轻松地获得相同的结果! :)
  • 多么愚蠢的错误! -1:您的代码 WON"T COMPILE 在 Java 中。
  • @Desolator,需要详细说明吗?尽管它显然在语义上不正确,但我看不到语法有任何问题。
  • @Desolator 你错了。我的编译器可以很好地编译代码而没有任何中断,并且没有理由不应该这样做,因为规范没有提到中断是 switch-case 工作所必需的。

标签: java


【解决方案1】:

case 语句是标准 goto 语句的一种形式,它转到 case 语句,然后照常继续。要获得你想要的行为,你需要一个

break;

在每个案例的结尾

【讨论】:

    【解决方案2】:

    案主的break在哪里!

    switch(random[i]){
     case 10: ....
      break;
     case 11: ....
      break;
     //and so on
    }
    

    【讨论】:

      【解决方案3】:

      添加 break 与所有 case 块类似

      case 10: 
        character[i] = "A";
        break;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 2018-01-29
        • 2020-10-25
        相关资源
        最近更新 更多