当前位置:  开发笔记 > 编程语言 > 正文

为什么此代码段显示编译错误?

如何解决《为什么此代码段显示编译错误?》经验,为你挑选了1个好方法。

我收到了这个编译问题,我无法弄清楚原因.有人可以帮忙吗?

    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));
    }}

Post Edit注意:我不知道在main()中不能声明另一个函数.在外面写它,它工作得很好.



1> T.J. Crowder..:

您正在尝试创建一个在方法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,或者您需要创建一个实例来调用它),但它现在在正确的位置.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有