【问题标题】:write recursive method in java & C#用java和C#编写递归方法
【发布时间】:2014-08-19 21:53:09
【问题描述】:

我想把这个简单的 C# 代码转换成 java:

public int CompareTo(object obj)
{
return _destIndex.CompareTo(((DiffResultSpan)obj)._destIndex);
}

我的java代码是:

public int compareTo(object obj)
{
return destIndex.compareTo(((DiffResultSpan)obj).destIndex);
}

但我的代码有错误:“int can not be dereferenced”。 我在net-beans中对其进行了编码。显然是真的。但我不知道该怎么办?!!

谢谢

哦,谢谢。我找到了! java中的int不是对象。我应该转换它!例如:

new Integer(destIndex).compareTo... 

【问题讨论】:

  • destIndex 还是int
  • 您不太可能真的拥有这段 Java 代码。 object 是什么? DiffResultSpan 的超类? - 在 Java 代码 sn-p 中没有取消对 int 的引用。此错误标记的行在哪里?
  • 而且,这绝对不是递归方法。
  • 你的代码没有编译,你的方法不是递归的,你的错误在哪里还不清楚。
  • @JeroenVannevel 小写的“o”可能是错字,destIndex 可能是int

标签: java c# dereference


【解决方案1】:

int 在 Java 中是原始类型,这意味着它没有方法或字段。如果您希望您的 compare 方法基于 int 比较两个对象,以下应该可以:

return destIndex - ((DiffResultSpan)obj).destIndex;

如果destIndex 可能为负数,则有可能整数溢出,因此您必须这样做:

int otherIndex = ((DiffResultSpan)obj).destIndex;
return destIndex < otherIndex ? -1 : (destIndex > otherIndex ? 1 : 0);

【讨论】:

  • 哦,谢谢。我找到了! java中的整数不是对象。我应该转换它!例如:new Integer(destIndex).compareTo...谢谢...
  • @faatemeh 仅仅为了进行比较而将一个原语装箱是非常浪费的。正如我在回答中所展示的那样,自己做逻辑会更有效率。
  • 你是对的。我的目标是转换。否则你的代码是正确的。
  • @faatemeh 为什么要“转换”它?你在用性能换……什么都没有。
  • 老师问我!!!但如果你说的性能下降。我会改变它。谢谢
猜你喜欢
  • 2011-03-05
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多