我最近在竞争性编程中从C转向Java。但我提交的任何解决方案都显示NZEC运行时错误。其中一个问题是https://www.codechef.com/problems/FCTRL2 我的解决方案是
import java.util.Scanner;
import java.math.BigInteger;
class Solution{
public int t, i=0;
public BigInteger N;
public static void main(String args[]){
Solution sol = new Solution();
sol.scanT();
sol.testCase();
System.exit(0);
}
public void scanT(){
Scanner sc = new Scanner(System.in);
t = sc.nextInt();
if(t>100 || t<1){
return;
}
}
public void testCase(){
Scanner sc = new Scanner(System.in);
for(i=0; i<t; i++){
N = sc.nextBigInteger();
if(N.compareTo(BigInteger.ONE)<0 || N.compareTo(BigInteger.valueOf(100))>0){
return;
}
BigInteger z = factorial();
System.out.println(z);
}
}
public BigInteger factorial(){
BigInteger Fact = N;
while(N.compareTo(BigInteger.valueOf(2))>0){
Fact = Fact.multiply(N.subtract(BigInteger.ONE));
N = N.subtract(BigInteger.ONE);
}
return Fact;
}
}
请帮助我在我的解决方案中找到错误,每次都会导致运行时错误NZEC。我的解决方案在我的计算机上运行时显示正确的输出。
答案 0 :(得分:1)
由于多个Scanner对象同时使用System.in而生成NZEC错误。 仅使用一个Scanner对象可以解决运行时错误NZEC的问题。