两个整数的java模除
我不断收到错误“运算符%对于参数类型Integer,Integer未定义”,我不太清楚为什么会发生这种情况。我认为,由于模除不能返回小数,所以使用整数值就可以了
这是在我正在创建的程序中的一个方法中发生的。 代码如下:
public void addToTable(Integer key, String value)
{
Entry<Integer, String> node = new Entry<Integer, String>(key, value);
if(table[key % tableSize] == null)
table[key % tableSize] = node;
}
该方法未完成,但错误发生在
if(table[key % tableSize] == null)
及
table[key % tableSize] = node;
如有任何帮助或建议,将不胜感激
# 1 楼答案
尝试将整数转换为整数,然后运行
%
# 2 楼答案
这里尝试的是取消装箱,将对象自动转换为基本类型(另一种方式是自动装箱)
Java文档中有这样一句话:
当包装器类的对象是:
因此,一种可能性是,您不是在做这些事情,虽然乍一看,您既没有将mod表达式传递给方法,也没有将其赋值给变量,但至少在Java 6中是有效的:
另一种可能性是,您使用的是Java 5之前的环境,其中引入了自动装箱和取消装箱
在这种情况下,最好的办法可能是显式地使用
Integer.intValue()
来获取底层的int
但是,您可能还想考虑使用一个{{CD2>}(不^ {CD4}})来键入密钥,并仅在需要EME>的点(当您将其添加到^ {CD5>})时将其装箱。使用原语类型可能会更快,不过您当然应该对其进行基准测试
# 3 楼答案
这对我来说很好
没问题。输出:
你犯了什么错误?你使用的是什么版本的Java?看起来您使用的是低于1.5的Java
# 4 楼答案
我可以获得一些样本
Integer % Integer
代码,以便在Java1.5和1.6中成功编译,但不能在1.4中编译这是1.4中的错误:
最合理的解释是,因为Java introduced autoboxing and autounboxing in 1.5,您必须使用1.5之前的Java编译器,比如说1.4
解决方案:
Integer.intValue()
来提取int
值,可以对其使用%
运算符李>