我收到了这个编译问题,但我无法弄清楚原因。有人可以帮忙吗?
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.getInt() ;
System.out.println(factorial(n)) ;
int factorial(int a){
if (a==0)
return 1;
else
return (a*factorial(a-1));
}}
发布编辑注释:我不知道在main()中无法声明另一个函数。在外面写它,它工作得很好。
答案 0 :(得分:6)
您正在尝试在 factorial
方法中创建一个名为main
的方法。它必须紧挨着它,而不是它里面。
可读且一致地格式化代码有助于解决问题:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.getInt();
System.out.println(factorial(n));
int factorial(int a) { // <=== Problem
if (a == 0)
return 0;
else
return (a * factorial(a - 1));
}
}
}
相反:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.getInt();
System.out.println(factorial(n));
}
int factorial(int a) {
if (a == 0)
return 0;
else
return (a * factorial(a - 1));
}
}
以上问题仍有问题(factorial
需要static
,或者您需要创建一个实例来调用它),但现在它位于正确的位置。