我正在尝试将我的代码提交给' Small factorials' SPOJ上的问题。 它在我的IDE上成功运行,但在SPOJ上显示运行时错误(NZEC)。请提出解决方案。
import java.util.Scanner;
class Factoria
{
public static void main (String[] args) throws java.lang.Exception
{
int t, n;
int multi = 1;
Scanner tc = new Scanner(System.in);
t = tc.nextInt();
for(int i=0;i<t;i++){
Scanner nc = new Scanner(System.in);
n = nc.nextInt();
for(int f=1;f<=n;f++){
multi = multi * f;
}
System.out.println(multi);
multi = 1;
}
}
}
答案 0 :(得分:3)
您的运行时错误可能是因为当您已经打开一个Scanner
时,尝试在System.in
上发起新的Scanner
。这似乎在Java 8上失败了,虽然似乎在Java 7上运行正常 - 都在ideone上进行了测试。无需发起新的Scanner nc = new Scanner(System.in);
。
如果您只是删除该行
tc.nextInt();
并使用nc.nextInt();
代替int
它应该有效。
我注意到你正在为在线比赛这样做。您还应注意,如果输入为&gt;,您的阶乘将失败(溢出)。 12,因为您正在使用import java.util.Scanner;
class Factoria
{
public static void main (String[] args) throws java.lang.Exception
{
int t, n;
int multi = 1;
Scanner tc = new Scanner(System.in);
t = tc.nextInt();
for(int i=0;i<t;i++){
n = tc.nextInt();
for(int f=1;f<=n;f++){
multi = multi * f;
}
System.out.println(multi);
multi = 1;
}
}
}
类型。我不知道这是否适用于您的情况。
5
4
3
5
2
1
24
6
120
2
1
Cat,,9
Dog,,10
Egg,,11