Mod划分为两个整数

use*_*305 6 java division modular-arithmetic

我一直收到错误"对于参数类型,运算符%是未定义的整数,整数"我不太确定为什么会发生这种情况.我认为,因为模块化除法不能返回具有整数值的小数.

这是在我正在创建的程序中的方法中发生的.代码如下:

    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;
}
Run Code Online (Sandbox Code Playgroud)

该方法未完成但错误发生在

    if(table[key % tableSize] == null)
Run Code Online (Sandbox Code Playgroud)

    table[key % tableSize] = node;
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激.

rge*_*man 7

我可以Integer % Integer在Java 1.5和1.6中成功编译一些示例代码,但不能在1.4中编译.

public static void main(String[] args)
{
   Integer x = 10;
   Integer y = 3;
   System.out.println(x % y);
}
Run Code Online (Sandbox Code Playgroud)

这是1.4中的错误:

ModTest.java:7: operator % cannot be applied to java.lang.Integer,java.lang.Integer
       System.out.println(x % y);
                            ^
Run Code Online (Sandbox Code Playgroud)

最合理的解释是,由于Java在1.5中引入了自动装箱和自动装箱,你必须使用1.5之前的Java编译器,比如1.4.

解决方案:

  • 升级到Java 1.5/1.6/1.7.
  • 如果必须使用1.4,则使用Integer.intValue()提取int 值,您可以使用该值%.