为什么这段代码不起作用? FCTRL2

时间:2016-03-21 17:35:40

标签: java

我最近在竞争性编程中从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。我的解决方案在我的计算机上运行时显示正确的输出。

1 个答案:

答案 0 :(得分:1)

由于多个Scanner对象同时使用System.in而生成NZEC错误。 仅使用一个Scanner对象可以解决运行时错误NZEC的问题。