如何用"if"语句重写多个三元"?:"?

use*_*030 2 java

我明白那个:

value = (a > b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

是相同的:

if (a > b)
  value = a;
else
  value = b;
Run Code Online (Sandbox Code Playgroud)

但我无法破译这意味着什么:

编辑(我之前使用的例子并不好,这是另一个例子中的真实代码):

Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
      : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
          : analytics.newTracker(R.xml.ecommerce_tracker);
Run Code Online (Sandbox Code Playgroud)

如何重写了最后方程式来讲if,else ifelse

mar*_*nas 11

您需要第二个条件才能使此三元表达式起作用.

value = (a > b) ? a : (b > c) ? c : d;
Run Code Online (Sandbox Code Playgroud)

然后它会变成:

if (a > b) {
    value = a;
} else if (b > c) {
    value = c;
} else {
    value = d;
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

if (trackerId == TrackerName.APP_TRACKER) {
    t = analytics.newTracker(PROPERTY_ID);
} else if (trackerId == TrackerName.GLOBAL_TRACKER) {
    t = analytics.newTracker(R.xml.global_tracker);
} else {
    t = analytics.newTracker(R.xml.ecommerce_tracker);
}
Run Code Online (Sandbox Code Playgroud)

资源:


Mad*_*mer 6

所以基于你链接例子:

Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
      : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
          : analytics.newTracker(R.xml.ecommerce_tracker);
Run Code Online (Sandbox Code Playgroud)

您似乎习惯于生产value = (a > b) ? a : b ? c : d;,这可能更像value = (a == b) ? c : (a == d) ? e : f,它会读取类似......

Tracker t = null;
if (trackerId == TrackerName.APP_TRACKER) {
    t = analytics.newTracker(PROPERTY_ID);
} else if ((trackerId == TrackerName.GLOBAL_TRACKER)) {
    t = analytics.newTracker(R.xml.global_tracker);
} else {
    t = analytics.newTracker(R.xml.ecommerce_tracker);
}
Run Code Online (Sandbox Code Playgroud)