当前位置: 首页 > 知识库问答 >
问题:

Switch语句不匹配所有条件

涂选
2023-03-14

我一定错过了什么。我正在计算一个列表,想跳过特定的数字,所以我做了一个switch语句:

$locationNumber = 00
DO {
    $locationNumber++
    switch ($locationNumber) {
    21 {$locationNumber++}
    31 {$locationNumber++}
    43 {$locationNumber++}
    44 {$locationNumber++}
    49 {$locationNumber++}
    51 {$locationNumber++}
    }
    Write-Host $locationNumber
} while ($locationNumber -lt 53)

以下是输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 52 53

注意,44出现了,尽管我没有Rest。有人能告诉我为什么/解决这个问题的方法吗?

谢谢

编辑:为上下文添加更多代码

共有3个答案

劳韬
2023-03-14

谢谢你的帮助,但我只是

$locationNumber = 00
DO {
    $locationNumber++
    switch ($locationNumber) {
    21 {$locationNumber++}
    31 {$locationNumber++}
    43 {$locationNumber += 3}
    47 {$locationNumber++}
    49 {$locationNumber++}
    51 {$locationNumber++}
    }

    Write-Host $locationNumber
    
} while ($locationNumber -lt 53)

在那里,我把3加到43,跳过了我不需要的那些。谢谢

方绪
2023-03-14

如果要从一系列数字中消除一组固定的数字(21、31、43、44、49、51),请执行以下操作:

$(
  switch (1..53) {
    { $_ -notin 21, 31, 43, 44, 49, 51 } { $_ }
  }
) -join ' '

以上结果(为便于阅读而换行)-请注意上面列表中的所有数字是如何丢失的:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29
 30 32 33 34 35 36 37 38 39 40 41 42 45 46 47 48 50 52 53

要捕获数组中的数字,只需指定一个变量来代替(…)
<代码>$nums=开关{…}

上述功能利用了以下特点:

>

  • ...,范围运算符,创建一系列整数作为数组。

    接受脚本块({…})的开关语句 )作为分支条件,其中手头的输入对象可以通过任意表达式进行测试。

    notin运算符,用于测试标量LHS是否不包含在RHS集合中。

    至于你的尝试:

    通过对要跳过的数字应用,它们仍然是由在switch语句之后执行的Write Host语句在do语句的相同迭代中打印的。

    Andrew Ryan Davis的有用答案通过default分支显示了该问题的解决方案。虽然上面的解决方案更加简洁,但Andrew的答案实际上更快,尽管这在实践中可能并不重要。

  • 秦时铭
    2023-03-14

    您可能需要的是switchesdefault子句。

    如果您将Switch语句中的Write-Host移动到default,这意味着如果不满足其他条件,则默认为此操作。

    $locationNumber = 00
    DO {
        $locationNumber++
        switch ($locationNumber) {
        21 {}
        31 {}
        43 {}
        44 {}
        49 {}
        51 {}
        default {Write-Host $locationNumber}
        }
    } while ($locationNumber -lt 53)
    
     类似资料:
    • 问题内容: 我想知道是否有一种方法可以在java switch case语句中执行不区分大小写的匹配。默认实现 区分大小写 。请参见下面的示例。 因此,以上语句作为输出返回。而且我正在尝试使其像 不区分大小写的 匹配一样工作。我尝试将字符串文字都转换为小写,然后进行比较。但无法做到。 问题答案: 如果要这样做:只需确保输入数据全部为小写,并使用小写… 本地化问题 同样,古老的本地化问题再次引起人们

    • switch 语句可以替代多个 if 判断。 switch 语句为多分支选择的情况提供了一个更具描述性的方式。 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块。 就像这样: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2':

    •  使用 switch 语句可以更简洁地实现 if ~ else if 的结构。格式如下。 switch(base_expression) { casecondition_expression1: casecondition_expression2: : : default: : : }  写在 base_expression 位置的表达式会在刚开始时被求值。switch 后面的语句块中的 case

    • stwith语句的格式一般如下: 1 switch (expression){ 2 case value :statement1 3 break; 4 case value2 :statement2 5 break; 6 .... 7 case value: statement 8 break; 9 d

    • 问题内容: 例如,如果我有以下声明: 在这种情况下,如果选择未返回任何结果,则be的值是多少? 问题答案: 简而言之,它将为null 我做了一个简单的临时表来测试 在不满足条件的情况下声明一个变量并获取值,则为null,如果您通过print语句查看,则不应打印任何内容 我只是再次插入以确认是否为空

    • 本文向大家介绍Swift中switch语句区间和元组模式匹配,包括了Swift中switch语句区间和元组模式匹配的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,下面一段代码给大家介绍了switch语句区间和元组模式匹配,具体内容如下所示: 以上所述是小编给大家介绍的Swift中switch语句区间和元组模式匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此