你能在三元中有一个返回和一个公式吗?

Posted

技术标签:

【中文标题】你能在三元中有一个返回和一个公式吗?【英文标题】:Can You Have A Return And A Formula In A Ternary? 【发布时间】:2022-01-21 07:14:27 【问题描述】:
   public boolean hasOne(int n) 
      while(n != 0) 
         (n % 10 == 1)? return true : n /= 10;

      

      return false;
  

我正在尝试检查发送的号码中是否有“1”。

【问题讨论】:

不,我相信编译器会告诉你有语法错误。 仅用于代码打高尔夫球/美化目的:while (n != 0 && n % 10 != 1) n /= 10; return n != 0; 提示:编程首先是你自己去尝试。含义:与其先写代码,不如问别人“这行得通吗”……自己试试。理想情况下,预先考虑您期望发生的事情。走着瞧吧。然后想想“为什么不一样”……然后,当你这么想的时候,也许然后请别人来填补空白。但是首先要“这是我的代码,其他人是我的代码”......这就像通过询问另一个人当你用力踩刹车时会发生什么来学习骑自行车。 【参考方案1】:

不,你不能那样做。三元运算预计会根据条件返回一个值。但是从方法调用返回时,return 语句不会返回超出其正常行为的值。但是要做你想做的事,你可以做以下事情:

public boolean hasOne(int n) 
   return Integer.toString(n).contains("1");

public static boolean hasOne(int n) 
    // in case it's negative
    n = Math.abs(n);

    while (n%10 > 1) 
        n/=10;
    
    return  n == 1;

您可以在此处阅读有关Conditional Operator aka Ternary Operator 的信息。

【讨论】:

【参考方案2】:

这毫无意义。

首先,你要明白“陈述”和“表达”的区别。

return 是一个语句,可能在关键字之后包含一个表达式。

条件运算符(它的专有名称,而不是“具有三个操作数的运算符”)用于表达式中。

你写的是:

<expression> ?  <statement> : <expression>

-或-

<expression> ?  <statement> : <statement> 

(第二个表达式可以是表达式语句)。

Java 中没有这样的语法。用'if'语句表达你想要的,简单明了。

 if (n % 10 == 1)
     return true;
 else
     n /= 10;

使用条件运算符的表达式不能与 if-else 语句互换。

【讨论】:

以上是关于你能在三元中有一个返回和一个公式吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能在返回之前解决一个 angularjs 承诺吗?

你能在标题中包含太多变量吗?

你能在一个Hibernate会话中拥有多个交易吗?

Git:你能在master改变后更新分支吗?

你能在IE的表格行上放一个渐变吗?

你能在类型数组上写扩展方法吗?