我嘗試使用的BigInteger這樣的(其中m和n爲整數):的BigInteger在Java中
m.substract(BigInteger.ONE), n.substract(BigInteger.ONE)
它說:
我是什麼 「的基本類型int不能調用減法(BigInteger的)」我在這裏做錯了嗎?
我嘗試使用的BigInteger這樣的(其中m和n爲整數):的BigInteger在Java中
m.substract(BigInteger.ONE), n.substract(BigInteger.ONE)
它說:
我是什麼 「的基本類型int不能調用減法(BigInteger的)」我在這裏做錯了嗎?
int
是一個本地數據類型,它是而不是一個對象!
也許你應該聲明m
和n
爲BigIntegers
而不是?
它說方法減(BigInteger)是未定義整型 – user2036340 2013-04-09 13:12:35
這是因爲它只在類BigInteger中定義,所以m需要是BigInteger類型 – GameDroids 2013-04-09 13:15:20
'int's不是對象,所以它們根本沒有方法。在某些情況下,java會將'int'自動裝箱到'Integer'。 「整數」不具有(或需要)減法方法。當減去'int's時,使用'-'運算符,例如'm-n'。 '-'運算符僅適用於本機數據類型。當減去'BigInteger's時,你可以使用'subtract'方法,它只適用於其他'BigInteger's。 – 2013-04-09 13:34:48
m.substract(BigInteger.ONE)這裏m只是一個int
它既不是一個BigInteger
也不是一個Object
任何種類的,但一個原始的。如果你想調用一個方法(substract(BigInteger i)
),那麼m和n需要是class
的Object
,實際上它的方法是substract(BigInteger i)
。
你可以做這樣的:
BigInteger mBig = new BigInteger(m); // in this case n is a String
mBig = mBig.subtract(BigInteger.ONE);
BTW:它被稱爲減和(不帶S)
'BigInteger'是不可變的,所以第二行不做任何事情,你需要重新賦值'mBig'。 「減量」的好處。 – 2013-04-09 13:16:15
@ bmorris591謝謝:) – GameDroids 2013-04-09 13:19:40
int
s爲原始時代,他們沒有方法不。減去。
盒裝類型Integer
也沒有subract(BigInteger)
方法。
你需要要麼使int
s轉換BigInteger
s的BigInteger.valueOf
或intValue
使BigInteger
s轉換int
秒。
後一種方法是不安全的,因爲BigInteger
可能大於Integer.MAX_VALUE
。
所以,你需要做的
BigInteger.valueOf(m).subtract(BigInteger.ONE),
BigInteger.valueOf(n).subtract(BigInteger.ONE)
但是,這是一個有點混亂,爲什麼不這樣做
BigInteger.valueOf(m - 1), BigInteger.valueOf(n - 1)
試圖調用'減法(BigInteger的)'的基本類型'int'。 – 2013-04-09 13:07:42
int是一個原始類型。你必須把你的值包裝到Integer類 – ITroubs 2013-04-09 13:07:47