首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java switch case语句会对负的int值执行多个case吗?

问java switch case语句会对负的int值执行多个case吗?
EN

Stack Overflow用户
提问于 2015-08-12 16:10:00
回答 6查看 5.5K关注 0票数 6

我只是在java代码中遇到了一些奇怪的东西:

代码语言:javascript
复制
switch (result) {
            case 0:
                result_amount = 500;
            case 1:
                result_amount = 600;
            case -1:
                result_amount = 700;
    } 

result来自原始类型int。对于值,执行1、case 1和case -1。

这是正常的开关柜行为吗?如果是:为什么?

EN

回答 6

Stack Overflow用户

发布于 2015-08-12 16:11:56

您需要在case块之后使用break关键字:

代码语言:javascript
复制
switch (result) {
        case 0:
            result_amount = all_amounts[i];
        break;
        case 1:
            result_amount = all_amounts[i];
        break;
        case -1:
            result_amount = all_amounts[i+1];
} 

switch语句将跳转到正确的case标记,然后执行后面的所有代码,忽略其他可能的case标记。您可以将switch语句看作是goto语句。

票数 11
EN

Stack Overflow用户

发布于 2015-08-12 16:13:20

失败了。

quoting from docs

break语句是必需的,因为如果没有它们,switch块中的语句将失败:匹配的case标签之后的所有语句都会按顺序执行,而不管后续case标签的表达式如何,直到遇到break语句。

您必须在每个案例之后添加break。

代码语言:javascript
复制
          case 1:
          result_amount = 600;
          break; 
票数 3
EN

Stack Overflow用户

发布于 2015-08-12 16:24:47

记住

这是几乎每个初学者都会犯的错误。这就是为什么我更喜欢C#的原因。它不允许“失败”。

您所做的错误是您漏掉了switch语句。尝试使用0作为result的值。它会检查所有的案例。当一个切换用例完成执行时,将执行下一个用例。这就是为什么我们需要为switch语句的每种情况添加一条break;语句。

代码语言:javascript
复制
switch (result) {
            case 0:
                result_amount = 500;
                break;
            case 1:
                result_amount = 600;
                break;
            case -1:
                result_amount = 700;
                break;
} 

但有时我们想要失败。例如,当我们想要计算一个月的天数时:

代码语言:javascript
复制
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        days = 31;
        break;
    case 2:
        days = 28;
    case 4:
    case 6:
    //Lots of code...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31959560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档