【问题标题】:What is the anatomy of a ternary operator statement? [duplicate]三元运算符语句的解剖结构是什么? [复制]
【发布时间】:2018-11-30 05:05:07
【问题描述】:

我是一名业余程序员,目前正在尝试学习递归。我一直在寻找一个解释诸如

之类的陈述的网站
public static init sumDigits(int i) {
  return i == 0 ? 0 : i % 10 + sumDigits(i / 10);
}

这解释了每个单独的组件的作用,例如分号或问号。帮助。

【问题讨论】:

  • 您发布的Java代码与递归无关。它与三元运算符有关。请参阅上面 Elliott 的评论。
  • 这篇文章不太清楚。你有什么问题?

标签: java ternary-operator


【解决方案1】:

? :三元 运算符。简单来说,您可以说它是一个 if else 语句。 现在如果? 之前的条件为真,那么动作就是写在?: 之间的语句。 如果? 之前的条件为假,那么动作就是写在: 之后的语句。

在您的情况下,您提到如果i==0,则返回0,否则返回i % 10 + sumDigits(i / 10)

【讨论】:

  • 已经有一些规范的问题涵盖了 Java 三元运算符的基础知识。
【解决方案2】:

现在让我来讲述这段代码:

要计算 i 的数字和,首先检查 i 是否等于 0。如果是, 则结果为 0。否则结果为 i 加的最后一位 i/10 的位数之和(向下舍入)。

  • i == 0 那是“首先检查 i 是否等于 0”
  • : 0 那就是“如果是,那么结果是0”
  • ? 那是“否则”
  • i % 10 那是“我的最后一位”
  • i / 10 那是“i/10(向下舍入)”
  • i % 10 + sumDigits(i / 10) 那是“i 的最后一位数字加上 i/10 的数字总和(向下舍入)”

【讨论】:

    【解决方案3】:
    public static init sumDigits(int i) {
      return i == 0 ? 0 : i % 10 + sumDigits(i / 10);
    }
    

    说明:首先更正方法的返回类型是init而不是int

    实际上,return 语句是这样说的, 如果i 的值为0return 0 否则return i % 10 + sumDigits(i / 10) 这里? 判断条件(i==0) 是真还是假。如果条件满足(即为真)则简单地返回 0 否则使用 i 的值进行一些操作

    可以这样写:

    public static int sumDigits(int i) {
              if(i==0)
                   return 0;
              else
                  return i % 10 + sumDigits(i / 10);
        } // that will result the same as above but with less amount of code.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2019-12-30
      • 2015-12-09
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多