Questions tagged «switch-statement»

在计算机编程中,switch,case,select或inspect语句是一种选择控制机制,用于根据变量内容调用特定的代码块。



8
Java将enum与switch语句一起使用
我已经看过类似于此问题的各种问答,但是还没有找到解决方案。 我所拥有的一个枚举代表了观看电视指南的不同方式... 在NDroid Application类中 static enum guideView { GUIDE_VIEW_SEVEN_DAY, GUIDE_VIEW_NOW_SHOWING, GUIDE_VIEW_ALL_TIMESLOTS } ...当用户更改视图时,事件处理程序会收到int0-2的值,而我想做这样的事情... 在Android Activity onClick(DialogInterface dialog, int which)事件处理程序中 // 'which' is an int from 0-2 switch (which) { case NDroid.guideView.GUIDE_VIEW_SEVEN_DAY: ... break; } 我习惯了C#枚举和select / case语句,这些语句将允许类似上面的内容,而且我知道Java会做一些不同的事情,但我只是不明白我需要做什么。 我将不得不诉诸if陈述吗?我可能只有3个选择,所以我可以这样做,但我想知道如何用Java中的切换用例来完成。 编辑抱歉,我没有完全扩展此问题,因为我将其视为通用Java问题。我已经添加了这个问题,以进一步解释。 没有什么是特定于Android的,这就是为什么我没有将其标记为Android,而是在Application类中定义了枚举,而我不希望在其中切换的代码位于的原因Activity。枚举是静态的,因为我需要从多个活动中访问它。


2
switch()语句用法
我对R中的switch语句有些困惑。只需对函数进行谷歌搜索,就可以看到如下示例: switch的常见用法是根据其中一个参数的字符值跳转到函数。 > centre <- function(x, type) { + switch(type, + mean = mean(x), + median = median(x), + trimmed = mean(x, trim = .1)) + } > x <- rcauchy(10) > centre(x, "mean") [1] 0.8760325 > centre(x, "median") [1] 0.5360891 > centre(x, "trimmed") [1] 0.6086504 但是,这似乎与if为每个语句指定一堆语句相同。type 这就是全部switch()吗?有人可以给我更多示例和更好的应用程序吗?

3
在JavaScript switch语句中进行严格比较是否安全?
我有一个可以为boolean false或整数(包括0)的变量。我想把它放在switch语句中,例如: switch(my_var){ case 0: // Do something break; case 1: // Do something else break; case false: // Some other code } 在Google Chrome浏览器中的测试中,它似乎可以完美运行,但是我有点紧张,因为我担心在某些浏览器中(如果my_var是false)它可能会执行以来的第一种情况0 == false。 我只是想知道JavaScript中是否有官方说switch语句将使用严格的比较,例如0 !== false,但是我自己找不到任何东西,而且我不确定这是否可以在不同的JavaScript引擎中很好地工作。有人知道switch语句所做的比较是否一定严格吗?

6
在案例陈述中使用{}。为什么?
什么是使用点{和}在一个case声明?通常,无论一条case语句中有多少行,所有行都将执行。这仅仅是有关旧/新编译器的规则吗? int a = 0; switch (a) { case 0:{ std::cout << "line1\n"; std::cout << "line2\n"; break; } } 和 int a = 0; switch (a) { case 0: std::cout << "line1\n"; std::cout << "line2\n"; break; }

1
Elm编译器永远运行,计算机越来越热
我不确定是什么引起了这个问题,但是在一个正在构建的项目中,编译器仅花费几个小时就可以编译模块。我的代码库的总大小为352KB,但是没有一个模块的大小超过10KB。我正在使用本机端口,但这非常琐碎。我只是拿它Date.now()。 有什么众所周知的东西会导致elm编译器永久编译吗?我没有很多依赖关系,但是我经常使用HTML。我真的很感谢任何提示会导致这种情况。 编辑 因此,事实证明,大写表达式会导致优化器花费很长时间,从0.16开始。这是有关Elm-Discuss提出问题的讨论,以及令人讨厌的案例比赛的要点。 我猜是很冗长的,要保留一个胡萝卜,为什么榆木的编译器会采用这种方式进行大小写匹配?这里发生的底层机制是什么?为什么在case语句上优化60多个模式匹配,编译器会花费一个多小时?

6
在Java开关中声明和初始化变量
我对Java开关有一个疯狂的问题。 int key = 2; switch (key) { case 1: int value = 1; break; case 2: value = 2; System.out.println(value); break; default: break; } 方案1-当key为2时,它成功地将值打印为2。 方案2-当我要在其中注释value = 2时case 2:,saying地说“本地变量值可能尚未初始化”。 问题: 场景1:如果执行流程没有转到case 1:(当时key = 2),那么它如何知道value变量的类型为int? 方案2:如果编译器将value变量的类型识别为int,则它必须已访问。(声明和初始化)中的int value = 1;表达式case 1:。那为什么它会吱吱作响?当我要发表评论value = 2时case 2:,说本地变量值可能没有初始化。


17
在每种情况下都使用带有范围值的switch语句?
在Java中,是否可以编写一个switch语句,其中每种情况都包含多个值?例如(尽管以下代码显然不起作用): switch (num) { case 1 .. 5: System.out.println("testing case 1 to 5"); break; case 6 .. 10: System.out.println("testing case 6 to 10"); break; } 我认为这可以在Objective C中完成,Java中是否有类似的东西?还是应该只使用if,else if语句?

3
用var / null奇怪的行为切换
给出以下代码: string someString = null; switch (someString) { case string s: Console.WriteLine("string s"); break; case var o: Console.WriteLine("var o"); break; default: Console.WriteLine("default"); break; } 为什么switch语句匹配case var o? 我的理解是case string s不匹配的,s == null因为(有效)(null as string) != null评估为假。VS Code上的IntelliSense告诉我这o也是一个string。有什么想法吗? 类似于:使用空检查的C#7切换大小写

17
带返回的switch语句-代码正确性
假设我在C语言中的代码大致具有以下结构: switch (something) { case 0: return "blah"; break; case 1: case 4: return "foo"; break; case 2: case 3: return "bar"; break; default: return "foobar"; break; } 现在显然,breaks对于代码正确运行不是必需的,但是如果我不把它们放在我的眼里,这似乎是一种不好的做法。 你怎么看?删除它们可以吗?还是保留它们以提高“正确性”?

14
如何在不超过最大值的情况下递增变量?
我正在为学校设计一个简单的视频游戏程序,并且创建了一种方法,如果调用该方法,玩家将获得15个健康点。我必须保持最大生命值100,并且由于目前有限的编程能力,我正在执行此类操作。 public void getHealed(){ if(health <= 85) health += 15; else if(health == 86) health += 14; else if(health == 87) health += 13; }// this would continue so that I would never go over 100 我了解我的语法不是很完美,但是我的问题是,什么是更好的方法,因为我还必须对损坏点做类似的事情,并且不要低于0。 这称为饱和算术。

3
Swift:在切换情况下针对可选值进行测试
在斯威夫特,我怎么能写这样的情况,一个开关语句测试值被切换对抗的内容可选,跳过如果可选包含案例nil? 这是我想象的样子: let someValue = 5 let someOptional: Int? = nil switch someValue { case someOptional: // someOptional is non-nil, and someValue equals the unwrapped contents of someOptional default: // either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional } 如果我只是这样写,那么编译器会抱怨someOptional没有解包,但是如果我通过添加!到末尾来显式解包,那么我当然会在someOptional包含的任何时间得到运行时错误nil。添加?代替!对我来说是有意义的(我想是基于可选链接的精神),但不会使编译器错误消失(即,实际上并没有解开可选)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.