2014-01-27 29 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,所以你将需要相应处理。