Java程序中的异常

时间:2013-04-21 06:51:58

标签: java

当我运行下面的代码时,会显示以下消息。它是什么意思,我在这种情况下如何克服它?

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0       at ifDemo.main(ifDemo.java:5)

public class ifDemo {
public static void main (String [] args)

{
    int x= Integer.parseInt(args[0]);
    double half=0.0;
    if (x!=0)
    {
        half=x/2.0;
        System.out.println(x+ "/2 = "+half);
    }
    if (x==0)
    {
        System.out.println("The value of x is "+x);
    }
    int y=x*5;
    char grade='F';
    if(y>=85)
    {
        grade='A';
    }
    if (y>=70 && y<85)
        grade='C';
    System.out.println("y=  "+y+ "and grade equal to  "+grade);

    }
}

8 个答案:

答案 0 :(得分:3)

基本上这意味着您正在尝试访问args数组中不存在的索引。

在您的代码中,您有:

int x= Integer.parseInt(args[0]);

这个错误抱怨你args数组中实际上没有索引0,即数组为空。

要解决此问题,您需要在运行时传递程序命令行参数,换句话说,将其作为java运行ifDemo 这里有一些整数

如需进一步阅读,请尝试this,Google也是您的朋友

答案 1 :(得分:2)

在运行代码时,您可能无法传递x可以从arg [0]获取值的任何值。

运行代码时传递值,这将解决问题。

您是否使用命令行执行它?

答案 2 :(得分:2)

当您从命令行运行程序时,您忘记添加一个参数:

java ifDemo.class 1

基本上变量args绝对没有任何内容。因此,当您尝试获取args[0]的值时,它会抛出ArrayIndexOutOfBoundsException。您可以阅读更多相关信息here

您可以添加的是一种验证形式,用于检查用户是否输入了一个号码,如果没有,则告诉他们。代码看起来像这样:

if(args == null || args.length == 0) {
    System.out.println("Please enter a number as a command line argument.");
    System.exit(0);
}

或者您可以考虑获取input from the console并使用do while loop进行验证。如果你想要一个代码示例,请告诉我!

答案 3 :(得分:2)

如果您尝试在命令提示符下运行该程序,请确保提供命令行参数。我尝试运行程序并没有错误。

screenshot

答案 4 :(得分:1)

int x= Integer.parseInt(args[0]);

在上面的那一行中,假设它至少有一个元素,那么你将索引到一个数组中。你确定它中有一个元素吗?你在调用java程序并传入一个数字吗?

答案 5 :(得分:1)

  

int x = Integer.parseInt(args [0]);

这是尝试读取第一个命令行参数。 当没有你描述的例外情况时它会失败。

您应该通过检查命令行参数来更新程序,如果它们不对,请添加错误消息。

答案 6 :(得分:1)

java ifDemo xxx运行它,其中xxx是一个整数。

args是一个名为Command line arguments的String数组。因此,如果您从命令行以java ifDemo 10 12运行程序,则args将包含[10,12]args[0]将为10,args[1]将为12且args.length将是2。

这行引发了一个错误,因为你没有使用命令行参数运行程序。

int x= Integer.parseInt(args[0]);

args为空,您正在尝试访问数组的第一个元素,该元素导致ArrayIndexOutOfBoundsException抛出,表示已使用非法索引访问了数组。索引为负数或大于或等于数组的大小。

答案 7 :(得分:1)

您没有将整数作为命令行参数int x= Integer.parseInt(args[0]);

传递

通过命令行争论为args [0]分配一个值。

按以下方式编译和运行程序:

javac ifDemo.java

java ifDemo 23

运行程序时,args [0]为23。

之前您没有通过命令行提供任何参数,因此未设置args [0]并且您获得 array-outofbound-exception