非法表达的开始,不确定为什么

时间:2014-05-26 20:47:08

标签: java netbeans

我是第一年的程序员,并不完全确定我在使用此代码时遇到了什么问题。拜托,有人可以帮忙吗?

package ________;

public class _______  
{

    public static void main(String[] args)
    {
        public int getFactorial(int number)
        {
            if (number == 1)
            {
                System.out.println("Returned 1");
                return 1;
            }
            else
            {
                int factor = number * getFactorial(number - 1);
                System.out.println("Returned " + factor);
                return factor;
            }

        }
    }

}

每次我尝试编译或运行程序时,此行都会显示非法的表达式启动方法:

public int getFactorial(int number)

____ 只代表隐藏的包和类名。使用NetBeans IDE 7.4,Java apllication

4 个答案:

答案 0 :(得分:1)

main函数中不能包含其他方法或函数。但是,您可以从主函数调用函数。

请将代码编写为

public static void main(String[] args)
{
    int number = 10;
    /* if you want user to input */
    Scanner get = new Scanner(System.in);
    number = get.nextInt(); // get the next integer user types :)
    getFactorial(number);
} 

public static int getFactorial(int number)
{
    int factor = 1;
    if (number == 1)
    {
        System.out.println("Returned 1");
    }
    else
    {
        factor = number * getFactorial(number - 1);
        System.out.println("Returned " + factor);
    }
    return factor;
}

这样,您的函数将位于同一个Class内,但不在Main方法的范围内。在main方法中,您将调用它以及控件将转移到getFactorial函数的位置。

答案 1 :(得分:0)

你有另一个方法(getFactorial)(main)。他们需要一个接一个地来。

答案 2 :(得分:0)

  public static void main(String[] args){
      getFactorial(int number);

    }
  public static int getFactorial(int number)
  {
    if (number == 1)
    {
        System.out.println("Returned 1");
        return 1;
    }
    else
    {
        int factor = number * getFactorial(number - 1);
        System.out.println("Returned " + factor);
        return factor;
    }
 }

答案 3 :(得分:0)

您无法在其他方法中编写方法。您的代码应如下所示:

package ________;

public class _______ {

    public static void main(String[] args) {
        //call getFactorial, for example
        int result = getFactorial(2);
    }

    public static int getFactorial(int number) {
        if (number == 1) {
            System.out.println("Returned 1");
            return 1;
        } else {
            int factor = number * getFactorial(number - 1);
            System.out.println("Returned " + factor);
            return factor;
        }

    }

}