-4

以下是问题描述:

在我准备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]是错误的,因为 theargs[0]是一个字符串,而 I 是一个int; 但是,第二个Ineteger I = Integer.valueOf(args[0])顺利完成,但是 JVM 抛出一个错误,我只是想不通为什么?

4

3 回答 3

0

JVM 抛出ArrayOutOfBoundsException是因为你args是空的,这意味着你在运行这个程序时没有传递任何参数。尝试运行此命令:java Test005 45. 顺便说一句,我认为您应该检查更多情况,例如:args[0] 不是数字格式(“ab”、“a1”)或 args 为空时。

于 2017-03-10T08:07:30.353 回答
0

要运行它,您必须在运行将分配给 args[0] 的程序时传递参数,然后您的程序将正常工作。如果您使用的是 Eclipse 之类的 IDE,您可以通过参数选项卡传递参数。检查以下链接以查看如何在 Eclipse IDE 中传递参数: http ://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html

于 2017-03-10T07:54:39.087 回答
0

你没有发现的一个大问题是

Integer I = Integer.valueOf(args[0]);

当且仅当:

  • args 数组帽子至少一个元素

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

在您的情况下,永远不会满足第一个条件,因此您试图获取空数组的第一个元素,然后出现异常

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

于 2017-03-10T09:05:26.063 回答