【问题标题】:What does this java statement mean? (question mark in conditional) [duplicate]这个java语句是什么意思? (有条件的问号)[重复]
【发布时间】:2023-02-22 10:10:54
【问题描述】:

我的基本数据结构教授发布了这个示例代码。我需要帮助破译这段代码的含义。

这是声明:

for (int i = 0; i < (num = args.length == 1 ? Integer.parseInt(args[0]) : 11); ++i) {

【问题讨论】:

  • a ? b : c 表示“如果 a 则表达式的值为 b,否则值为 c”。
  • 这都是非常基本的代码。你能澄清一下你不明白的部分吗?

标签: java


【解决方案1】:

问号伴随着冒号,形成所谓的三元运算符。

如果 args.length == 1,则将 n 与 Integer.parseInt(args[0]) 进行比较,否则将 n 与 11 进行比较。

为了更清晰和更好的性能,我建议在单独的语句中将其中的一些逻辑从循环中拉出来

可以在这里找到有关此的更多信息:https://www.baeldung.com/java-ternary-operator

【讨论】:

  • 它的名字实际上是conditional operator。 “三元运算符”仅表示“具有三个操作数的运算符”,它没有说明它的作用。
【解决方案2】:

那就是 ternary conditional operator,在某些方面就像写在一行上的简单 if-else 语句。然而,与 if-else 不同的是陈述, 三元运算符回报一个值,因此它经常被发现嵌入在更复杂的语句中。

它由三部分组成:条件、真表达式和假表达式。它的用法如下:

condition ? expression_if_true : expression_if_false

在您的情况下,表达式为:

(num = args.length == 1) ? Integer.parseInt(args[0])  : 11

它将args数组的长度分配给变量num,如果num为1,则计算为Integer.parseInt(args[0]);如果num不为1,则计算为11

【讨论】:

  • 说它是 if/else 的捷径可能有点误导陈述当它是表达.
  • 好点子!我会进行编辑。
【解决方案3】:

这是一个三元运算符的示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator。这就像一个 if 语句,其中“num = args.length == 1”是你的条件,“Integer.parseInt(args[0])”是你的返回语句,如果条件为真,“11”是你的返回语句,如果所述条件为假(如 else)。所以如果 args.length == 1,那么你的循环将运行到你的数字第一个参数的次数,否则它只会运行 11 次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2011-04-28
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多