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

问题描述 投票:0回答:2

我在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;
}
java linked-list ternary-operator ternary
2个回答
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
投票

你无法用三元条件运算符表达这个逻辑,因为第二和第三个操作数有不同的类型(booleanNode)。

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

static boolean search(int xData) {

    Node temp = head ; 

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

    return false ;
}
© www.soinside.com 2019 - 2024. All rights reserved.