嗨,我是無法理解這是爲什麼不工作整數數量太大
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫爾斯在哪裏只是一個數字的字符串。問題是它說Integer數字太大:4545454545,但我相信一個Long可以比這個長得多。
嗨,我是無法理解這是爲什麼不工作整數數量太大
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫爾斯在哪裏只是一個數字的字符串。問題是它說Integer數字太大:4545454545,但我相信一個Long可以比這個長得多。
您需要使用4545454545l
或4545454545L
才能將其限定爲long
。默認情況下,4545454545
是int
文字,而4545454545
超出int
的範圍。
建議使用大寫字母L
爲了避免混淆,如l
和1
看起來非常相似
你可以這樣做:
if(Long.valueOf(4545454545l).equals(Long.parseLong(morse))){
System.out.println("2");
}
OR
if(Long.parseLong(morse) == 4545454545l){
System.out.println("2");
}
如果後綴爲ASCII字母L或l(ell),則整數常量的類型爲long;否則它是int類型的(§4.2.1)。
因爲'parseLong()'返回的是一個很長的原語,所以不需要使用'.equals()' - == ==就可以正常工作。 – berry120
*不要*使用'l',使用'L'。兩者意味着同樣的事情,但前者可能會造成混亂,因爲它看起來像'1'。 – arshajii
@arshajii注意到...... – NINCOMPOOP
您需要使用4545454545L
或4545454545l
來限定它的長度。
Long.parseLong()返回一個long(原始類型)。使用==很好。 –
如果你的整數值大於2147483647
更大,因爲你的文字是,那麼你需要用很長的文字:
4545454545L
...注意L
末,這之間的區別一個長整型文字。一個小寫的l
也可以工作,但不易讀,因爲它很容易與1混淆(當你處理一個數字時不是一件好事!)
+1提到可讀性問題。 – arshajii
我相信你一定已經意識到了錯誤,直到現在..你正在比較一個整數和一個長。 Integer的最大值是2147483647,大約是您在那裏鍵入的一半。 – dharam
yup從來不知道L到底有多長,謝謝 – Strife