Java 为什么整数i=Integer.valueOf(args[0])失败?args[0]是一个字符串

Java 为什么整数i=Integer.valueOf(args[0])失败?args[0]是一个字符串,java,value-of,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 ArrayOutOfB

以下是问题描述:

在我为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);

    }
}

第一个
整数I=args[0]
是错误的,因为
args[0]
是字符串,而I是
int
;但是,第二个
Ineteger I=Integer.valueOf(args[0])
执行得很顺利,但是JVM抛出了一个错误,我无法理解原因是什么?

要运行它,必须在运行将分配给args[0]的程序时传递参数,然后程序才能正常工作。 如果您使用的是像eclipse这样的IDE,您可以通过arguments选项卡传递参数。 查看下面的链接以了解如何在eclipse IDE中传递参数:
JVM抛出
ArrayOutOfBoundsException
,因为您的
args
为空,这意味着您在运行此程序时没有传递任何参数。尝试运行以下命令:
javatest005 45
。顺便说一下,我认为您应该检查更多的情况,例如:args[0]不是数字格式(“ab”、“a1”),或者args为空。

您没有发现的大问题是

Integer I = Integer.valueOf(args[0]);
只有在以下情况下才有效:

  • args数组至少包含一个元素

  • args[0]可以转换为整数对象
在您的情况下,第一个条件永远不会满足,因此您尝试获取空数组的第一个元素,而不是异常


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

阅读javadoc!如果您获得了代码中提到的ArrayOutOfBoundsException,则程序启动时不会使用参数What is
args.length
?我建议您阅读。运行此类时是否设置了参数?例如“javatest005 2”,我现在还不能发表评论,所以我给出了一个在你否决之前修改过的答案。谢谢,这个url真的帮助了我,我现在要学习eclipse中的命令行