"?-6ren"> "?-我正在编写 BST 程序。我收到错误: “二元运算符的错误操作数类型”>” 第一种:java.lang.Object 第二种:java.lang.Object" 这是它给我错误的方法: public -6ren">
gpt4 book ai didi

java - 二元运算符的错误操作数类型 ">"?

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:22 25 4
gpt4 key购买 nike

我正在编写 BST 程序。我收到错误:

“二元运算符的错误操作数类型”>”

第一种:java.lang.Object

第二种:java.lang.Object"

这是它给我错误的方法:

public void placeNodeInTree(TreeNode current, TreeNode t)                                                                    
{
if(current == null)
current = t;
else{
if(current.getValue() > t.getValue())
current.setRight(t);
if(current.getValue() < t.getValue())
current.setLeft(t);
}
}

getValue() 的返回类型为 Object,因此是 java.lang.Object 类型。这是我第一次看到这个错误。任何人都可以给我一些关于这个错误的背景吗?谢谢

最佳答案

当然 - 您根本无法应用 >对象之间的运算符。你希望它做什么?您也不能应用任何其他二元运算符 - + , - , /等(字符串连接除外)。

理想情况下,您应该制作 TreeNode 通用,并且有一个 Comparator<T>能够比较任意两个实例,或者生成 T extend Comparable<T> .无论哪种方式,您都可以将它们与以下内容进行比较:

int comparisonResult = comparator.compare(current.getValue(), t.getValue());
if (comparisonResult > 0) {
// current "greater than" t
} else if (comparisonResult < 0) {
// current "less than" t
} else {
// Equal
}

int comparisonResult = current.getValue().compareTo(t.getValue());
// Code as before

如果没有泛型,您可以将值转换为 Comparable或者仍然使用一般的 Comparator ...但泛型是更好的选择。

关于java - 二元运算符的错误操作数类型 ">"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com