2016-04-24 80 views
-1

我似乎無法弄清楚,爲什麼我可以將浮動轉換爲int執行以下操作:轉換浮動,以詮釋差異

float a = 3; 
int b = (int)a; 

,但是當我嘗試以下方法:

public class MyTestCode{ 
    public static int Add(Object a, Object b){ 
     int c = (int)a; 
     int d = (int)b; 
     return c + d; 
    } 
} 

.. .it給出以下錯誤:

*Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer 
at myTestCode.MyTestCode.Add(MyTestCode.java:15) 
at ch02.ex01.Ch02Ex01.main(Ch02Ex01.java:25) 
Java Result: 1* 

爲什麼我可以在一個示例中將float從int轉換爲int,而不是另一個?

+0

java.lang.Float不能轉換爲java.lang.Integer的部分不清楚。 'java.lang.Float'!= float' –

+0

這很有道理,但爲什麼它會將我的float轉換爲Float?我將它初始化爲float並將其輸入到方法中,因此並不期望它將其轉換爲Float。 –

回答

2

這是因爲在一個情況下,你有一個原始float和其他你有一個java.lang.Float對象。要將該對象轉換爲浮點數,應如下所示:

public static int add(Object a, Object b){ 
    float c = (Float)a; 
    float d = (Float)b; 
    return (int)(c + d); 
} 

回到原始的float首先應該解決問題。

+0

我試過這個,它沒有工作。不知道是否我錯過了一些東西: public class MyTestCode { public static int Add(Object a,Object b){0,0,0,0,float c =(Float)a; float d =(Float)b; return(int)(c + d); } } –

+1

@Alan您收到了什麼錯誤?也請用小寫字母開始方法名稱。 –

+1

@AlanPauley在我的機器上試了一下。假設我通過了兩次漂浮物,完美地工作。就在我們討論這個話題時,如果你總是傳遞一個float,爲什麼你需要方法簽名來獲取Object? – nhouser9