我总是得到这个错误"线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:0"

时间:2015-01-28 10:07:00

标签: java

class TriangularNumbers {
    public static void main(String args[]) {
        int n = Integer.parseInt(args[0]);
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j--) {
                System.out.print((i * j) + " ");
            }
            System.out.print("\n");
        }
    }
}

编译此程序时,我收到此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

5 个答案:

答案 0 :(得分:0)

您应该至少使用一个命令行参数运行程序,因为它尝试读取此类参数并将其解析为int(Integer.parseInt(args[0])的作用)。

答案 1 :(得分:0)

args []数组似乎是空的。

答案 2 :(得分:0)

您没有为程序提供参数。这就是args为空的原因。

检查args[]的大小是否大于1.

if (args.length<1) {
   System.out.println("No parameter");
   exit().
}

答案 3 :(得分:0)

您应该像java TriangularNumbers arg0 arg1 arg2...一样运行它至少arg0必须存在。

答案 4 :(得分:0)

您收到ArrayIndexOutOfBoundsException,因为您尝试访问args[0],但args是一个空数组。如果您尝试:

public static void main(String[] args) {
    System.out.println("my code has " + args.length + " params");
    // your code
}

您会看到打印出的字符串为"my code has 0 params"

如果您使用至少一个参数运行程序或强行填充args,则此错误应该消失,例如:

public static void main(String[] args) {
    args = new String[]{"10"};
    // your code
}

但是,你写的内部for-loop永远不会结束。您的程序是无限循环。这是因为它在j <= i时执行了循环,但在每个循环j都减少了(j--)。然后j永远不会等于或大于i。你的循环永远不会结束。