我的代码应该打印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
答案 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++;
}
通过遵循编码风格/指南,它不仅可以让您更轻松地阅读代码,还可以阅读其他代码。