Java链接列表搜索方法中的三元运算符

时间:2017-12-24 09:18:34

标签: java linked-list ternary-operator ternary

我在Syntax error on token "=", != expected

中获得temp = temp.next

这是代码的其余部分

static boolean search(int xData) {

    Node temp = head; 

    while (temp != null) {
        return (temp.data == xData ) ? true : temp = temp.next;
    }

    return false;
}

2 个答案:

答案 0 :(得分:2)

您正在尝试编写无法使用条件运算符完成的操作。

相反:

if (temp.data == xData) return true;
temp = temp.next;
return (temp.data == xData )? true : temp = temp.next ;

总是返回。毕竟,这是一份回报。所以,你的循环只会迭代一次。

您可以为作业添加括号:

return (temp.data == xData )? true : (temp = temp.next);

然而:

  • 您在返回前立即重新分配了一个本地变量 - 重点是什么?
  • 表达式的类型不是布尔值,因此它与方法的返回类型不兼容。

更好的方法是使用for循环:

for (Node temp = head; temp != null; temp = temp.next) {
  if (temp.data == xData) return true;
}
return false;

答案 1 :(得分:1)

您无法使用三元条件运算符表达该逻辑,因为第2和第3个操作数具有不同的类型(booleanNode)。

此外,当条件为真时,您似乎想要突破循环(使用return语句),否则保持循环,因此条件表达式没有任何意义。

static boolean search(int xData) {

    Node temp = head ; 

    while(temp != null) {
       if (temp.data == xData)
           return true;
       temp = temp.next;
    }

    return false ;
}