我正在尝试调用我的方法m1(int)
,但在尝试使用String作为输入时出错。
背后的原因是什么?
class TestSuper
{
public void m1(int i)
{
System.out.println("int-arg");
}
public void m1(float f)
{
System.out.println("float-arg");
}
public static void main(String[] args){
TestSuper t = new TestSuper();
t.m1(10.5f);
t.m1(10);
t.m1("Name"); // <- Where I get the error.
}
}
答案 0 :(得分:1)
对于初学者,您正尝试在对象String
和基元int
之间进行投射。这根本行不通。对象不能转换为基元,反之亦然。
A String
,包含一个包裹在对象中的char
数组
int
,由单个带符号的十进制数组成。
当您尝试运行需要int
String
的方法时,您没有为其提供数字,而是为其提供char
,被投射到int
。
此外,您设置重载的方式,无法区分天气与否,您使用的是m1(int)
方法或m1(float)
方法。要解决此问题,您应该添加以下方法:
public void m1(String s) {
System.out.println("String-arg");
}
将来,要在String
和int
之间进行投射,请使用:
int i = Integer.parseInt("44"); // Equal to 44.
然后冒着回报NumberFormatException
的风险,这样才安全:
public void randomMethod(String input) {
int i = 0;
try {
i = Integer.parseInt(input);
} catch (NumberFormatException e) {} // Fill in with your requirements.
}