Java退出代码:137并且没有打印

时间:2014-05-07 20:39:42

标签: java jvm exit-code

我的代码应该打印int' numComb'。但事实并非如此。当我运行它时,在我停止程序之前没有任何反应,然后出现正确的答案,退出代码:137'。我已经读过137意味着它可能是JVM的一个问题。但是,我也知道它可能是其他事情的结果,所以我想知道我的代码中它的原因,如果它与它有任何关系而不打印答案。可能是JVM错误。谢谢,山姆。

代码:

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int o = 0;
        int numRem = 0;
        int numLim = 0;
        while((sc.hasNextInt())&&(o<1)) {
            int numT = sc.nextInt();
            numLim = sc.nextInt();
            numRem = sc.nextInt();
            o++;
        }
        List<Integer> persons = new ArrayList<Integer>();
        int nextPer;
        while(sc.hasNextInt()){
            nextPer = sc.nextInt();
            if(nextPer<=numLim) {
                persons.add(nextPer);
            }
        }
        int ns = persons.size();

        int numComb = (factorial(ns)) / ((factorial(numRem)) * (factorial(ns - numRem)));//replace with '1' in reply to comment
        System.out.println(numComb);
        System.exit(0);
    }
    public static int factorial(int n) {
        int f = 1;
        for (int i = 1; i <= n; i++) {
            f *= i;
        }
        return f;
    }

这是整个计划,因为我在评论中要求它。另外,我的测试输入是:

3 2 2 1 2 3

1 个答案:

答案 0 :(得分:0)

您的错误可能在这里:

    int o = 0;
    int numRem = 0;
    int numLim = 0;
    while((sc.hasNextInt())&&(o<1)) {
  ----> int numT = sc.nextInt();  // You are re-declaring numT
        numLim = sc.nextInt();
        numRem = sc.nextInt();
        o++;
    }

您可以通过在适当的位置添加更多空白来避免此类编码错误。

例如,我会用这种格式编写代码:

int o =         0;
int numRem =    0;
int numLim =    0;

while( sc.hasNextInt() && (o < 1) )
{
    int numT =  sc.nextInt();
    numLim =    sc.nextInt();
    numRem =    sc.nextInt();

    o++;
}

通过遵循编码风格/指南,它不仅可以让您更轻松地阅读代码,还可以阅读其他代码。