有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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抛出了一个错误,我无法理解为什么


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    要运行此程序,必须在运行将分配给args[0]的程序时传递参数,然后程序才能正常工作。 如果您使用的是像eclipse这样的IDE,您可以通过arguments选项卡传递参数。 查看下面的链接以了解如何在eclipse IDE中传递参数: http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html

  3. # 3 楼答案

    你没有注意到的一个大问题是

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

    只有在以下情况下才有效:

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

    • args[0]可以转换为整数对象

    在您的情况下,第一个条件永远不会满足,因此您尝试获取空数组的第一个元素,而不是异常

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