具有字符串错误输出的开关语句

我遇到了这个基本问题,其中开关大小写与字符串一起使用。


Break 语句不在案例之间使用,但为什么即使它与案例字符串不匹配,它也会转到所有案例?


所以我很好奇为什么输出是3而不是1?


 public static void main(String [] args)

      {

        int wd=0;


        String days[]={"sun","mon","wed","sat"};


        for(String s:days)

        {

          switch (s)

          {

          case "sat":

          case "sun":

            wd-=1;

            break;

          case "mon":

            wd++;

          case "wed":

            wd+=2;

          }

        }

        System.out.println(wd);

      }


www说
浏览 151回答 2
2回答

慕虎7371278

你没有 在末尾,所以值也递增 2break;case "mon"这是你没想到的,流动:0    -1   -1   +1+2  +2 = 3^     ^    ^   ^     ^init sat  sun  mon  wed 添加如下中断将得到输出 1case "mon":  wd++;  break;

UYOU

在“sat”和“mon”的案例末尾没有。这意味着当一个元素匹配“sat”和“mon”时,它将执行该案例中包含的代码,但随后落入下一个案例。break;case当到达 时,它会从开关块中断开。这将停止在块内执行更多的代码和用例测试。break在这种情况下。当它测试“sat”和“mon”时,它看不到 ,因此继续测试。break0   -1    0    2    4    3^    ^    ^    ^    ^    ^    sun  mon  mon  wed  sat
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java