我有一个类赋值,我需要将一个目标排序到一个二叉树节点中,给定一个根,我需要将它与根进行比较,如果目标小于根的值,则将目标作为左子,或者如果目标大于根的值,则将目标作为右子。
我必须使用给定的方法头和参数,我的代码是这样编写的:
public static boolean find(TreeNode t, Comparable x)
{
TreeNode p = t;
if(t == null)
return false;
while(p != null)
{
if(p.getValue() == x)
return true;
else if(p.getValue() < x)
p = p.getLeft();
else
p = p.getRight();
}
return false;
}
返回以下错误:
java:109:错误:二进制运算符“<”的操作数类型不正确
我还尝试了compareTo方法,通过尝试类似于
if(p.getValue().compareTo(x) == 0)
return true;
返回以下错误:
binarySearchTree.java:107:错误:找不到符号if(P.GetValue().compareTo(x))^symbol:method compareTo(Comparable)Location:class Object
如何修复此错误?我试着搜索这个问题,但没有特别大的帮助。
更新-TreeNode类:
class TreeNode
{
private Object value;
private TreeNode left, right;
public TreeNode(Object initValue)
{
value = initValue;
left = null;
right = null;
}
public TreeNode(Object initValue, TreeNode initLeft, TreeNode initRight)
{
value = initValue;
left = initLeft;
right = initRight;
}
public Object getValue()
{
return value;
}
public TreeNode getLeft()
{
return left;
}
public TreeNode getRight()
{
return right;
}
public void setValue(Object theNewValue)
{
value = theNewValue;
}
public void setLeft(TreeNode theNewLeft)
{
left = theNewLeft;
}
public void setRight(TreeNode theNewRight)
{
right = theNewRight;
}
}
看起来x
是您的comparable
接口。您应该对此参数调用compareTo
方法,然后将结果与0
进行比较。类似的Javadoc有一些使用示例。compareTo
函数返回:
负整数、零或正整数,因为此对象小于、等于或大于指定对象。
出现错误的原因是,最初,您试图在不兼容的类型上应用<
。p.getValue()
返回一个对象
,而x
是一个comparable
(通常您应该在基元上应用此运算符,如int
、long
等)。
第二个错误是,即使p.getValue()
对象具有compareTo
方法,您也必须小心与其他对象进行比较。例如,如果它是一个字符串,则只能将它与另一个字符串进行比较,例如“str1”。compareTo(“str2”);
为了正确比较您的值,您应该做如下操作:
// checking if x is less than p's value
if (x.compareTo(p.getValue()) < 0) { ... }
// checking if x is greater than p's value
if (x.compareTo(p.getValue()) > 0) { ... }
// checking if x is equal to p's value
if (x.compareTo(p.getValue()) == 0) { ... }
我创建了一个,当调用变量为ISE时,它会读取相关数据的表。但是,如果我尝试将与另一个对象进行比较,无法正确读取。我想告诉脚本,如果现有CSV中的任何行与匹配,则不会将数据导出到CSV,换句话说,跳过CSV文件中的重复行。CSV可能有也可能没有多行。
问题内容: 我想比较两个字符串在Java中的相等性(如果一个或两个都可以),因此我不能简单地调用。什么是最好的方法? 编辑: 问题答案: 这是Java内部代码(在其他方法上)使用的:
在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部
问题内容: 我有两个从同一类实例化的java对象。 如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同 但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。 如何比较这两个对象以验证它们是否相同? 问题答案: 你需要提供自己的实现。 如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:
我有两个不同的嵌套对象,我需要知道它们的一个嵌套属性是否有差异。 对象可能更复杂,具有更多嵌套属性。但这是一个很好的例子。我可以选择使用递归函数或与lodash有关的东西。。。
问题内容: 我需要比较两个缓冲图像,看它们是否完全相同。只是说那等于是行不通的。我目前的方法是 但这并不能真正起作用。还有什么其他更可靠的方法? 问题答案: 显而易见的解决方案是逐像素比较它们是否相同。