三元运算符的结构是什么?

时间:2018-11-30 05:05:08

标签: java ternary-operator

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

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

并解释每个单独的部分的功能,例如分号或问号。救命。

3 个答案:

答案 0 :(得分:0)

? :三元运算符。简单来说,您可以说它是 if 的声明。 现在,如果?之前的条件为true,则操作为在?:之间编写的语句。 如果?之前的条件为假,则该操作为在:之后编写的语句。

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

答案 1 :(得分:0)

现在让我讲述一下这段代码:

  

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

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

答案 2 :(得分:0)

public static init sumDigits(int i) {
  return i == 0 ? 0 : i % 10 + sumDigits(i / 10);
}

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

实际上return语句说, 如果i的值为0,则return 0否则为return i % 10 + sumDigits(i / 10) 这里的?确定条件(i==0)是对还是假。如果条件满足(即为true),则简单地返回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.