以下是问题描述:
在准备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]
是一个字符串,而我是int
;但是,第二个Ineteger I = Integer.valueOf(args[0])
顺利地符合,但是JVM抛出一个错误,我只是想不出来为什么?
答案 0 :(得分:0)
要运行它,你必须在运行将被分配给args [0]的程序时传递参数,然后你的程序才能正常工作。 如果您使用的是像eclipse这样的IDE,则可以通过Arguments选项卡传递参数。 查看以下链接,了解如何在eclipse IDE中传递参数: Adding a second email address to a completed order in WooCommerce
答案 1 :(得分:0)
JVM抛出ArrayOutOfBoundsException
因为你的args
为空,这意味着你在运行这个程序时没有传递任何参数。尝试运行此命令:java Test005 45
。顺便说一句,我认为你应该检查一些例子:args [0]不是数字格式(&#34; ab&#34;,&#34; a1&#34;)或args是空的。< / p>
答案 2 :(得分:0)
你没有发现的重大问题是
Integer I = Integer.valueOf(args[0]);
当且仅当:时,才有效
AND
在你的情况下永远不会满足fisrt条件,所以你试图得到一个空数组的第一个元素,因此异常
你没有提到你是如何测试的,你是从另一个类/如何调用该方法,还是从终端启动应用程序/如何...