首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >switch语句在Java中的使用

switch语句在Java中的使用
EN

Stack Overflow用户
提问于 2016-09-21 12:46:12
回答 6查看 1.3K关注 0票数 2

例如,我得到的情况是数字a只能是1、2、3或4。然后我用它来构建一个开关模块,如下所示:

代码语言:javascript
复制
switch (metadata.getValueType()) {
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    case 3:
        method3();
        break;
    case 4:
        method4();
}

但是我知道在没有default的情况下编写开关块不是一个好习惯,对吧?所以我想在case 4之后添加一个default。但是我可以确定除了1,2,3和4之外没有其他的情况。我应该用default写什么

最佳实践是什么?在案例4中,我可以不写任何内容吗,如下所示:

代码语言:javascript
复制
switch (metadata.getValueType()) {
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    case 3:
        method3();
        break;
    case 4:
    default:
        method4();
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-09-21 13:10:37

不管您使用的是哪种语言,我总是使用default子句。

事情可能而且确实会出错。值将不是您所期望的,以此类推。

代码语言:javascript
复制
switch (myVar) {
   case 1: ......; break;
   case 2: ......; break;
   default: throw new RuntimeException("myVar invalid " + myVar);
}
票数 2
EN

Stack Overflow用户

发布于 2016-09-21 13:11:48

如果我没理解错你的问题..。

提供默认开关选项是一种最佳实践,因为它将捕获任何预期的值(即使它们无效: 5、6、7等)以及意外的值。这允许您控制当任何有效值命中开关时发生的情况。要回答您的问题,您可以只在默认情况下添加一条break语句,该语句除了退出开关之外什么也不做。

代码语言:javascript
复制
switch (metadata.getValueType()) {
case 1:
    method1();
    break;
case 2:
    method2();
    break;
case 3:
    method3();
    break;
case 4:
    method4();
    break;
default:
    break;
}
票数 1
EN

Stack Overflow用户

发布于 2016-09-21 12:53:13

是的,没有缺省的switch语句是丑陋的。因此,您只需删除case 4并将其替换为default即可。就像你说的,你正好有4个箱子。所以,如果它不是1或2或3..。它将是4。但我希望通过使用4个案例来保留您的代码,并在默认正文中打印一些错误消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39607742

复制
相关文章

相似问题

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