首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:我可以在switch语句中只使用一个case吗?

Java:我可以在switch语句中只使用一个case吗?
EN

Stack Overflow用户
提问于 2013-03-25 02:08:47
回答 7查看 16.3K关注 0票数 18

在Java语言中,在switch语句中只能执行其中一种情况吗?我知道如果我执行break,我会一直到switch语句的末尾。

这就是我的意思。给定以下代码,在case 2上,我想执行case 2和case 1。在case 3上,我想执行case 3和case 1,但不是case 2。

代码语言:javascript
运行
AI代码解释
复制
switch(option) {
    case 3:  // code
             // skip the next case, not break
    case 2:  // code
    case 1:  // code
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-25 02:10:46

不,使用switch语句不可能实现您想要的结果。您将遍历每个case,直到命中break。也许您希望case 1位于switch语句的外部,这样它就会被执行。

票数 13
EN

Stack Overflow用户

发布于 2013-03-25 02:10:26

将代码放入方法中并根据需要进行调用。按照您的示例进行操作:

代码语言:javascript
运行
AI代码解释
复制
void case1() {
    // Whatever case 1 does
}

void case2() {
    // Whatever case 2 does
}

void case3() {
    // Whatever case 3 does
}

switch(option) {
    case 3:
        case3();
        case1();
        break;
    case 2:
        case2();
        case1();
        break;
    case 1: 
        case1();   // You didn't specify what to do for case 1, so I assume you want case1()
        break;
    default:
        // Always a good idea to have a default, just in case demons are summoned
}

当然case3()case2()..。都是非常糟糕的方法名称,您应该重命名为更有意义的名称,以了解该方法的实际作用。

票数 12
EN

Stack Overflow用户

发布于 2013-03-25 02:23:40

我的建议是不要对anything使用fallthrough,除非出现以下情况:

代码语言:javascript
运行
AI代码解释
复制
switch (option) {
    case 3:
        doSomething();
        break;
    case 2:
    case 1:
        doSomeOtherThing();
        break;
    case 0:
        // do nothing
        break;
}

也就是说,为几种情况提供完全相同的相同的代码块来处理它们(通过“堆叠”case标签),使这里的流程或多或少变得显而易见。我怀疑大多数程序员会直观地检查大小写错误(因为缩进让大小写看起来像是一个适当的块),或者是否能有效地读取依赖于它的代码-我知道我做不到。

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

https://stackoverflow.com/questions/15606572

复制
相关文章
java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
taoli
2022/09/30
1.5K0
java switch case 语句
Java switch case语句
swith 语句主要用于判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支。基本格式如下:
算法与编程之美
2022/10/28
1.4K0
Java switch case语句
java中switch case和break使用
switch只能比较数值或字符或者类对象 首先看看switch的括号,当中放置您要取出数值的变量。取出数值之后,程序会开始与case中所设定的数字或字符做比较, 如果符合就执行其中的语句,直到遇到break后离开switch程序块;如果没有符合的数值或字符,则会执行default后的语句, default不一定需要;如果没有默认要处理的动作,可以省去这个部分 实例如下:
用户5166556
2019/04/16
1.3K0
为什么变量不可以在 switch 语句中声明定义
case 语句其实就是标签(label),就像 goto 语句那样,解决这个问题其实很简单,只需加一对大括号,以表明作用域即可,
ClearSeve
2022/02/11
7560
java switch case 用法详解
1.普通用法 public static void test(){ int i = 5; switch (i){ case 5: System.out.println("是个5"); break; case 10: System.out.println("是个10"); break;
IT云清
2019/01/22
1.5K0
switch case,一个糟糕的设计!!!
说到switch case我们通常都会想到 if else,相较于if else支持任何数据类型、表达式和变量,而switch case只是支持short、byte、char、int、String和枚举。因为switch case内部逻辑控制清晰的原因,当业务判断超过三个以上,我们比较建议使用switch case。
用户5166556
2019/11/26
1.1K0
Swift入门: Switch case
您已经看到了if语句和循环,但是Swift有另一种类型的流控制,称为switch/case。这是最容易认为这是一个先进的形式,如果,因为你可以有很多匹配和Swift将执行正确的一个。
韦弦zhy
2020/03/19
6620
一个switch case引起的线上bug
1、上午的时候,QA同学突然说,测试自动化的流程突然过不去了,问我是不是最近对线上做了某些修改。当时第一反应是不可能
高性能架构探索
2021/04/08
7550
python技巧 switch case
不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法:
py3study
2020/01/20
5790
第一个可以在条件语句中使用的原生hook诞生了
在10月13日的first-class-support-for-promises RFC[1]中,介绍了一种新的hook —— use。
公众号@魔术师卡颂
2022/11/22
8090
python switch-case
[Switch-Statement-Flowchart.png] python原生没有switch case的语法 使用下面的方案可以替代 # Function to convert number into string # Switcher is dictionary data type here def numbers_to_strings(argument): switcher = { 0: "zero", 1: "one", 2: "two",
zero000
2021/07/26
4610
一个switch case引起的线上故障
1、上午的时候,QA同学突然说,测试自动化的流程突然过不去了,问我是不是最近对线上做了某些修改。当时第一反应是不可能
高性能架构探索
2021/04/13
4650
使用goto跳转到switch的某个case
    switch(n) { case 1: cost += 25; break; case 2: cost += 25; goto case 1; case 3: cost += 50; goto case 1; default: Console.WriteL
拓荒者IT
2019/09/26
1.7K0
JavaScript switch case语句详解
switch 语句专门用来设计多分支条件结构。与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高。 语法格式
用户3519280
2023/07/07
5460
JavaScript switch case语句详解
switch.....case....使用最容易犯错的地方
请诸位看这段代码,如果runtimeDatabase 为MYSQL或H2,标注1的那行代码是否会执行。 final RuntimeDatabase runtimeDatabase = Latkes.getRuntimeDatabase(); switch (runtimeDatabase) { case MYSQL: case H2: case MSSQL: 1、 repositoryClass = (Class<Repository>) Class.forName("org.b3log.latke.rep
java达人
2018/01/31
8180
封装一个RxCondition,告别if else和switch case
通常而言,Rx如果遇到if条件语句、switch case语句时需要先选择分支条件,然后再进行链式调用。RxCondition产生的目的就是为了在这些情况下也能顺利地使用链式调用。
fengzhizi715
2018/08/24
9730
Python的switch-case来了
众所周知,大多数语言都是 switch-case 语句,但是作为红极一时的 Python,它却没有。今天,它终于来了。2021 年 2 月 8 日,指导委员会通过了 PEP 634, PEP635, PEP636,至此,Python 总算拥有了功能和 switch-case 相同的 match-case, 我们再也不用再写一连串的 if-else 了。
Python研究所
2022/06/17
3.8K0
Python 中的switch-case
Python中是没有switch-case语句的 —— 因为完全可以用if else模拟?根据python哲学,于是switch-case就没有了。
py3study
2020/01/06
7910
我只会 Java 一门语言可以吗?
如果你这么想,说明你被自己的看家本事给局限住了,这种思维方式会让你即便学到了更多好东西,也无可奈何。
JavaEdge
2023/01/15
8560
用表驱动代替switch-case
不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。 简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?我也不知道,就以在最低分辨率的显示器上能够在一个窗口中完整显示整个switch-case块为判断依据吧。化解长switch-case的方法有很多种,用函数封装或者宏取代case块是治标不治本的方法,使用表驱动通常是治疗这种顽症的有效方法,本文将介绍如何用表驱动方法化解长switch-case。 还是用例子说明问题吧,假设我们要为一个系统编写驱动,系统已经定义好了如下所示的复用接口(MUX): STATUS DriverIoControl(UINT function_no, PVOID para_in, PVOID para_out) 用户层程序通过复用接口调用驱动,功能号就是function_no,驱动程序负责实现具体的DriverIoControl()函数完成相应的功能。这是使用switch-case的典型场景,先看一个使用switch-case的方案: STATUS DriverIoControl(UINT function_no, PVOID para_in, PVOID para_out) { STATUS rc; switch(function_no) { case PROCESSA: rc = ProcessA(para_in,para_out); break; case PROCESSB: rc = ProcessB(para_in,para_out); break; case PROCESSC: rc = ProcessC(para_in,para_out); break; .......... default: rc = UN_SUPPORT; break } return rc; } STATUS ProcessA(PVOID para_in, PVOID para_out) { //一些代码.... } STATUS ProcessB(PVOID para_in, PVOID para_out) { //一些代码.... } STATUS ProcessC(PVOID para_in, PVOID para_out) { //一些代码.... } ................ 这个方案中规中矩,但是如果驱动很复杂,功能很多,那么DriverIoControl函数代码的长度是相当可观的,好像已经闻到坏味道了,呵呵。现在换成使用宏的解决方案: #define DISPATCH_BEGIN(func) switch(func) \ { #define DISPATCH_FUNCTION(func_c, function) case func_c: \ rc = function(para_in,para_out); \ break; #define DISPATCH_END(code) default: \ rc = code; \ } STATUS DriverIoControl(UINT function_no, PVOID para_in, PVOID para_out) { STATUS rc; DISPATCH_BEGIN(function_no) DISPATCH_FUNCTION(PROCESSA,ProcessA) DISPATCH_FUNCTION(PROCESSB,ProcessB) DISPATCH_FUNCTION(PROCESSC,ProcessC) ........................ DISPATCH_END(UN_SUPPORT) return rc; } 嗯,好一点,但好不到哪里去,只是用一行代替多行而已,并不能改变代码随着功能增多线性增长的趋势。罗嗦一下,我不喜欢宏的原因很简单,目前很少有(说实话,是我确实没有见过)调试器支持对宏的展开调试。这很麻烦,当一段掺杂着宏的代码没有达到预期的目的时,你不得不一遍一遍地在心里展开你的宏,以确定它是没有问题的(或者,你根本不能确定,只能假设它没有问
用户4766018
2022/08/19
7220

相似问题

在C语言的switch语句中,可以在case中使用switch循环吗?

23

我可以在Java的actionPerformed方法中使用switch - case吗

41

是否可以在java switch/case语句中使用类名?

37

我可以在Ruby中的switch语句中访问case选项吗?

23

使用switch case结构,我可以转到一个函数吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档