为什么Integer i = Integer.valueOf(args [0])失败了? args [0]是一个String

时间:2017-03-10 07:50:00

标签: java value-of

以下是问题描述:

在准备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抛出一个错误,我只是想不出来为什么?

3 个答案:

答案 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]);
当且仅当:

时,

才有效

  • args array hat AT LEAST ONE element

AND

  • args [0]是可以转换为Integer对象的东西

在你的情况下永远不会满足fisrt条件,所以你试图得到一个空数组的第一个元素,因此异常

你没有提到你是如何测试的,你是从另一个类/如何调用该方法,还是从终端启动应用程序/如何...