2014-01-27 74 views
1
public static int toInt(Object a) 
{ 
    return (int) a; 
} 

public static Object tInput() 
{ 
    return read.nextLine(); 
} 

當我嘗試如何通過方法將對象轉換爲int?

public static void main (String []args) 
{ 
    System.out.println(toInt(tInput())); 
} 

我得到一個類轉換異常 - 即使我在數字輸入!整型!

我不知道我在做什麼錯。誰能幫忙?

====編輯====
人們說我不能施放它,因爲它是一個字符串。
我試過這種方法,這個工作。
有人可以解釋嗎?

public static void check() 
{ 
    Object h = 2014; 
    int a = (int) h; 
    System.out.println(a); 
} 
+0

什麼是'read'和'nextLine'返回的是什麼? – rgettman

+1

編輯中的代碼工作原因是存儲在'h'中的對象的運行時類型是'int'。你用來引用它的引用'h',是一個可以包含任何'Object'的引用。既然你給它賦了一個'int'值,那麼你可以將它轉換爲'int',因爲你正在將'int'轉換爲'int'。如果相反你做'對象h =「嗨,媽媽!」; int a =(int)h;'那麼你會得到一個類轉換異常,因爲你正試圖將'String'轉換爲'int'。 –

+1

沒有將任意對象「鑄造」爲「int」的常用方法。 「cast」操作聲明被引用的變量具有被轉換爲的類型,或者(僅在基元的情況下)可以使用明確定義的技術轉換爲該類型。你顯然想要做的是將一個字符串轉換爲int。在這種情況下,將參數聲明爲String並使用Integer.parseInt。將參數聲明爲Object只會延遲到運行時間,這可能會在編譯時檢測到錯誤。 –

回答

1
public static int toInt(Object obj) 
{ 
     return Integer.parseInt((String) obj); 
} 



public static void main (String []args) 
{ 
    System.out.println(toInt(tInput())); 
} 
2
read.nextLine(); //returns a string. 

你不能投一個字符串轉換爲整數,所以我會用Integer.parseInt(str)字符串第一解析爲一個整數,則施放。試着改變你的tInput()方法,下面的方法

public static Object tInput() 
{ 
    return Integer.parseInt(read.nextLine()); 
} 

看看Java文檔的Integer.parseInt(字符串),如果需要的話

Integer#parseInt

1

StringsIntegers(尤其是不是ints)。你不能施放它們,你需要轉換。 A String可以通過Integer.parseInt(myString)

1

轉換爲int您不能將String轉換爲int

試試這個:

int myInt = Integer.valueOf(tInput().toString()); 
return myInt; 
1

如果你的對象是一個字符串像在這種情況下,你可以使用:

int i = Integer.valueOf((String) object); 

如果你的對象是一個整數,你可以區分它:

int i = (Integer) object; 

兩種方法都有exc eptions,所以你將需要相應處理。