为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2022-09-22 10:41:22

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


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

      }


查看完整描述

2 回答

?
慕虎7371278

TA贡献1468条经验 获得超4个赞

你没有 在末尾,所以值也递增 2break;case "mon"


这是你没想到的,流动:


0    -1   -1   +1+2  +2 = 3

^     ^    ^   ^     ^

init sat  sun  mon  wed 

添加如下中断将得到输出 1


case "mon":

  wd++;

  break;


查看完整回答
反对 回复 2022-09-22
?
UYOU

TA贡献1546条经验 获得超4个赞

在“sat”和“mon”的案例末尾没有。这意味着当一个元素匹配“sat”和“mon”时,它将执行该案例中包含的代码,但随后落入下一个案例。break;case


当到达 时,它会从开关块中断开。这将停止在块内执行更多的代码和用例测试。break


在这种情况下。当它测试“sat”和“mon”时,它看不到 ,因此继续测试。break


0   -1    0    2    4    3

^    ^    ^    ^    ^    ^

    sun  mon  mon  wed  sat


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信