【问题标题】:What is going on in this piece of logic ? Java, parenthesis这段逻辑是怎么回事? Java,括号
【发布时间】:2015-12-28 22:46:38
【问题描述】:
private int hour;
private int minute;
private int second;

public void setTime(int h, int m, int s){
hour = ((h>=0 && h < 24) ? h : 0);
}

来自这个 mrbostons java 教程:

https://www.thenewboston.com/videos.php?cat=31&video=18001

虽然你可以(?)用 if 语句编写相同的代码,但我想知道这段代码发生了什么以及我如何在其他地方使用它

【问题讨论】:

  • 这是一个短路的if-else 语句,称为三元运算符。基本上,它的意思是,if (h &gt;= 0 &amp;&amp; h &lt; 24) { hour = h; } else { hour = 0 }

标签: java logic


【解决方案1】:

这里相当于

hour = ((h>=0 && h < 24) ? h : 0);

if/elses:

if(h>=0 && h < 24) 
    hour = h;
else
    hour = 0;

第一种表示法是使用三元运算符

【讨论】:

  • 这里不需要括号
  • 三元运算符 是我正在寻找的答案。问题已回答
  • 我不查,但你确定我不会写hour = h&gt;=0 &amp;&amp; h &lt; 24 ? h : 0;
  • @v.ladynev 你真的可以做到。
【解决方案2】:
hour = ((h>=0 && h < 24) ? h : 0);

如果 h 大于或等于 0 且小于 24,则将 hour 设置为 h 的值,否则将 hour 设置为零。

【讨论】:

  • 谢谢,但我已经知道什么代码说的,但不知道为什么
  • 啊,在你的问题中,你问的是代码在做什么:-) 公平地说,我也可以提到这是一个三元运算符。
  • @KLibby 是的,三元运算符是大卫布莱恩魔法的关键
猜你喜欢
  • 1970-01-01
  • 2012-03-21
  • 2011-12-19
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多