2010-06-30 90 views
1

有人可以看看這段代碼,並告訴我爲什麼會發生異常嗎?整數問題

public static void main(String[] args) 
{ 
    int total =100; 
    int discount_Ammount = 20 ; 
     int newAccount=Integer.parseInt(String.valueOf(Math.floor(total - discount_Ammount)).trim()); 
} 

方法返回地面雙重價值,那麼我做鑄造爲整數,所以我將它轉換爲字符串,然後整數......請,任何人可以幫助?

+1

你會得到什麼例外?我會猜測一個'ClassCastException',但我不應該猜測,我可能是錯的。 – FrustratedWithFormsDesigner 2010-06-30 20:21:37

+1

你爲什麼打地板? – ChaosPandion 2010-06-30 20:22:07

+7

你爲什麼打地板?減兩個整數將會給你一個int。沒有必要落地減法。 – Tommy 2010-06-30 20:26:00

回答

3

不需要做的Integer.parseInt(將String.valueOf(

要強制轉換爲int,只是做(INT)(等等trim()

So int newAccount=(int)(Math.floor(total - discount_Ammount)); 
14

你是不是 「鑄造」 任何東西。只刪除空白,這將永遠存在於String.valueOf(double)結果

使用強制:

int newAccount = (int) Math.floor(total - discount_Ammount); 

Java是一種強類型編程語言,而不是腳本語言。不支持字符串和其他類型之間的隱式轉換。

或者得到完全擺脫floor()操作的,因爲你是用int數量已經工作,並floor()是沒有意義的:

int newAccount = total - discount_Ammount; 

如果你用錢的工作,使用BigDecimal類,這樣你可以使用您的會計系統所需的舍入規則。使用double時,您將無法控制此功能。

+0

+ 1用於討論強打字 – Malfist 2010-06-30 20:49:14

+0

在這段代碼中我使用整數,但在我的程序中我使用雙值,所以我需要floor operatoion,但(int)使得投影非常簡單,thanx用於BigDecimal信息和爲解決方案。 – palAlaa 2010-06-30 21:26:17

8

你試過這個嗎?

int newAccount = (int) Math.floor(total - discount_Ammount); 

甚至這個!

int newAccount = total - discount_Ammount; 
+0

哈哈......是的,有人沒有了解數據類型:) – Bozho 2010-06-30 20:28:59