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
答案 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
。你的循环永远不会结束。