如何使用a%b
大的整数? 喜欢
...
BigInteger val = new BigInteger("1254789363254125");
...
boolean odd(val){
if(val%2!=0)
return true;
return false;
...
Eclipse的说,运营商%是未定义的BigInteger。
有任何想法吗?
如何使用a%b
大的整数? 喜欢
...
BigInteger val = new BigInteger("1254789363254125");
...
boolean odd(val){
if(val%2!=0)
return true;
return false;
...
Eclipse的说,运营商%是未定义的BigInteger。
有任何想法吗?
像这样:
BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
if(!val.mod(new BigInteger("2")).equals(BigInteger.ZERO))
return true;
return false;
}
或者,正如用户邓肯在评论建议,我们可以完全取出的if语句,像这样:
BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
return !val.mod(new BigInteger("2")).equals(BigInteger.ZERO));
}
一个更有效的方法是检查的最后一位。 如果是0
(又名false
)的数量为偶数,否则它是奇数。
public boolean odd(BigInteger i){
return i.testBit(0);
}
odd(BigInteger.valueOf(1));//true
odd(BigInteger.valueOf(2));//false
odd(BigInteger.valueOf(101));//true
odd(BigInteger.valueOf(100));//false
也少其的代码行。
我使用的方法余这样的类BigInteger的:
BigInteger result = a.remainder(b);
分配是由于事实的BigInteger是不变的,所以不会通过该方法来改变。
使用val.mod(2)。
BigInteger的是一个对象。 您不能使用对象上的算术运算符,只有具有元的作品。
%仅与java.lang.Integer中的工作,因为这会隐式转换(实际上,它被称为拆箱)为int。 但是BigInteger的不能拆箱。 拆箱/八幸(这意味着对象到原始/原语转换成对象)只适用于整数,浮点,双,短和字节。
由于BigInteger的是一类,而不是原始的* 1,你不使用它的运营商。 检查BigInteger的方法: http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#mod(java.math.BigInteger )
* 1:以整数的情况下,浮动,可以使用运算符,因为JVM的对象自动转换到其原始值(自动装箱)