class Factorl
{
public static void main(String args[])
{
long n,fact=1;
n=Long.parseLong(args[0]);
for(int i=1;i<=n;i++)
{
fact=fact*i;
}
System.out.println("fact="+fact);
}
}
在线程“ main”中显示异常
java.lang.ArrayIndexOutOfBoundsException:Factorl.main处为0
答案 0 :(得分:0)
因为您使用命令行参数作为程序行中的输入
n=Long.parseLong(args[0]);
在这里您应该传递一个值来运行这样的程序
compile by > javac Factorl.java
run by > java Factorl 5
Output:
fact=120
答案 1 :(得分:0)
如果没有任何内容传递给您的args
数组(ref),则该数组可能为空。检查其是否为空。
class Factorl {
public static void main(String args[]) {
long n, fact = 1;
if (args.length != 1) {
System.out.println("Factorial for what?");
return;
}
n = Long.parseLong(args[0]);
for (int i = 1; i <= n; i++) {
fact = fact * i;
}
System.out.println("fact=" + fact);
}
}
我个人认为您不会计算Long
的阶乘。阶乘增长非常快。请注意,20!
是2.432902e+18
。多数民众赞成在那。
现在,您可以参考@MangduYogii的答案“如何传递命令行参数”。