首页 > 解决方案 > 带有字符串错误输出的 switch 语句

问题描述

我遇到了这个基本问题,其中 switch case 与字符串一起使用。

案例之间不使用 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);
      }

标签: javaarraysswitch-statementbreak

解决方案


你没有 abreak;在最后case "mon"所以值也增加了 2

你没想到的,流程:

0    -1   -1   +1+2  +2 = 3
^     ^    ^   ^     ^
init sat  sun  mon  wed 

如下添加中断将导致输出 1

case "mon":
  wd++;
  break;

推荐阅读