Java 两个整数的模除
我不断收到错误“运算符%对于参数类型Integer,Integer未定义”,我不太清楚为什么会发生这种情况。我认为,由于模除不能返回小数,所以使用整数值就可以了 这是在我正在创建的程序中的一个方法中发生的。 代码如下:Java 两个整数的模除,java,division,modular-arithmetic,Java,Division,Modular Arithmetic,我不断收到错误“运算符%对于参数类型Integer,Integer未定义”,我不太清楚为什么会发生这种情况。我认为,由于模除不能返回小数,所以使用整数值就可以了 这是在我正在创建的程序中的一个方法中发生的。 代码如下: public void addToTable(Integer key, String value) { Entry<Integer, String> node = new Entry<Integer, String>(key, value)
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.intValue() % tableSize.intValue()] == null)
table[key.intValue() % tableSize.intValue()] = node;
这对我来说很好
Integer x = Integer.valueOf(10);
Integer y = Integer.valueOf(3);
int z = x % y;
System.out.println(z);
没问题。输出:
1
你犯了什么错误?您使用的是什么版本的Java?似乎您使用的是低于1.5的Java。我可以获得一些示例
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);
}
这是1.4中的错误:
ModTest.java:7: operator % cannot be applied to java.lang.Integer,java.lang.Integer
System.out.println(x % y);
^
最合理的解释是,因为您必须使用1.5(比如1.4)之前的Java编译器
解决方案:
- 升级到Java1.5/1.6/1.7
- 如果必须使用1.4,请使用
提取Integer.intValue()
值,您可以对其使用int
运算符%
当包装类的对象为以下对象时,Java编译器将应用取消装箱:
- 作为参数传递给需要相应基元类型的值的方法
- 分配给相应基元类型的变量
因此,一种可能性是,您没有执行这些操作之一,尽管乍一看,您既没有将mod表达式传递给方法,也没有将其分配给变量,但至少在Java 6中是有效的:
class Test {
public static void main(String args[]) {
Integer x = 17;
Integer y = 5;
System.out.println (x % y);
String [] z = new String[10];
z[x % y] = "hello";
}
}
另一种可能性是,您使用的是Java 5之前的环境,其中引入了自动装箱和取消装箱
在这种情况下,最好的办法可能是显式地使用Integer.intValue()
来获取底层的int
不过,您可能还想考虑使用“<代码> int <代码> >(不是<代码>整数>代码>),只在需要的地方装箱(当您将其添加到<代码>条目< /代码>)时。使用原语类型可能会更快,不过您当然应该对其进行基准测试以确保它的正确性。
您使用的是什么版本的Java?怀疑@durron597是正确的,并且您使用的是<1.5,因此请按照下面的答案进行操作。在Java 1.5和1.6中,我可以成功编译Integer%Integer。ModTest.java:7: operator % cannot be applied to java.lang.Integer,java.lang.Integer
System.out.println(x % y);
^
class Test {
public static void main(String args[]) {
Integer x = 17;
Integer y = 5;
System.out.println (x % y);
String [] z = new String[10];
z[x % y] = "hello";
}
}