java为什么整数i=Integer。valueOf(参数[0])失败?args[0]是一个字符串
以下是问题描述:
在我为ocjp测试做准备的过程中,我遇到了一个问题,我不知道它出了什么问题
package test;
class Test005{
public static void main(String[] args){
//Integer i = args[0];//cannot convert string to Integer
Integer I = Integer.valueOf(args[0]); // Error ArrayOutOfBoundsException :0
int j = 12;
System.out.println(j == i);
}
}
第一个Integer I = args[0]
是错误的,因为args[0]
是字符串,而I是int
;然而,第二个Ineteger I = Integer.valueOf(args[0])
执行得很顺利,但是JVM抛出了一个错误,我无法理解为什么
# 1 楼答案
JVM抛出
ArrayOutOfBoundsException
,因为你的args
是空的,这意味着你在运行这个程序时没有传递任何参数。尝试运行以下命令:java Test005 45
。顺便说一下,我认为您应该检查更多的情况,例如:args[0]不是数字格式(“ab”、“a1”),或者args为空时# 2 楼答案
要运行此程序,必须在运行将分配给args[0]的程序时传递参数,然后程序才能正常工作。 如果您使用的是像eclipse这样的IDE,您可以通过arguments选项卡传递参数。 查看下面的链接以了解如何在eclipse IDE中传递参数: http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html
# 3 楼答案
你没有注意到的一个大问题是
只有在以下情况下才有效:
及
在您的情况下,第一个条件永远不会满足,因此您尝试获取空数组的第一个元素,而不是异常
你没有提到你是如何测试它的,你是从另一个类/如何调用该方法,还是从终端/如何启动应用程序