Java 链表中的三元运算符 Search 方法
The ternary operator in Java Linked list Search method
我在 temp = temp.next
中得到了一个 Syntax error on token "=", != expected
这是剩余的代码
static boolean search(int xData) {
Node temp = head;
while (temp != null) {
return (temp.data == xData ) ? true : temp = temp.next;
}
return false;
}
您无法使用三元条件运算符表达该逻辑,因为第二个和第三个操作数具有不同的类型(boolean
与 Node
)。
此外,您似乎想在条件为真时跳出循环(使用 return 语句),否则留在循环中,因此条件表达式没有意义。
static boolean search(int xData) {
Node temp = head ;
while(temp != null) {
if (temp.data == xData)
return true;
temp = temp.next;
}
return false ;
}
您正在尝试编写无法使用 条件 运算符完成的内容。
改为:
if (temp.data == xData) return true;
temp = temp.next;
return (temp.data == xData )? true : temp = temp.next ;
将永远return。毕竟,这是一个 return 语句。所以,你的循环只会迭代一次。
您可以在作业中加上括号:
return (temp.data == xData )? true : (temp = temp.next);
但是:
- 您在 returning 之前立即重新分配局部变量 - 这有什么意义?
- 表达式的类型不是布尔值,因此它与方法的 return 类型不兼容。
更好的写法是使用 for 循环:
for (Node temp = head; temp != null; temp = temp.next) {
if (temp.data == xData) return true;
}
return false;
我在 temp = temp.next
Syntax error on token "=", != expected
这是剩余的代码
static boolean search(int xData) {
Node temp = head;
while (temp != null) {
return (temp.data == xData ) ? true : temp = temp.next;
}
return false;
}
您无法使用三元条件运算符表达该逻辑,因为第二个和第三个操作数具有不同的类型(boolean
与 Node
)。
此外,您似乎想在条件为真时跳出循环(使用 return 语句),否则留在循环中,因此条件表达式没有意义。
static boolean search(int xData) {
Node temp = head ;
while(temp != null) {
if (temp.data == xData)
return true;
temp = temp.next;
}
return false ;
}
您正在尝试编写无法使用 条件 运算符完成的内容。
改为:
if (temp.data == xData) return true;
temp = temp.next;
return (temp.data == xData )? true : temp = temp.next ;
将永远return。毕竟,这是一个 return 语句。所以,你的循环只会迭代一次。
您可以在作业中加上括号:
return (temp.data == xData )? true : (temp = temp.next);
但是:
- 您在 returning 之前立即重新分配局部变量 - 这有什么意义?
- 表达式的类型不是布尔值,因此它与方法的 return 类型不兼容。
更好的写法是使用 for 循环:
for (Node temp = head; temp != null; temp = temp.next) {
if (temp.data == xData) return true;
}
return false;