错误:找不到符号

时间:2012-11-21 19:12:02

标签: java methods parameters scope return

public static void main(String args [])
{
    Scanner in = new Scanner(System.in);

    int number = 0;

    do{
        System.out.print("Which Fibonacci Number would you like? ");
        number = in.nextInt();
    }while(number < 0 || number > 71);

    System.out.printf("Fibonacci #%d is %d\n",number, fibcalc(fib));

}

 public static double fibcalc(int number)
{
    double prevNumber1 = 0;
    double prevNumber2 = 1;
    double fib = 0;

    for(int i =0; i < number; i++){
        fib = prevNumber1;
        prevNumber1 = prevNumber2;
        prevNumber2 = fib + prevNumber2;

}
    return fib;
}

上面的代码就是我所拥有的。

以下是我继续犯的错误:

 error: cannot find symbol
 System.out.printf("Fibonacci #%d is %d\n",number, fibcalc(fib));
                                                              ^
 symbol:   variable fib
 location: class dlin_Fibonacci

据说它无法找到     fibcalc(fib)

我想从fib方法返回fibcalc的值,因此我可以使用main方法打印它。

有谁知道为什么不让我这么做?

我尝试仅使用变量fib,但结果是相同的错误消息。 这与变量fib是局部变量而不是类变量的事实有关吗?如果是,那怎么做它是一个类变量? 我尝试将变量fibnumber移到我的main方法之上。有点像...

private static int number = 0;
private static double fib = 0;

public static void main(String arg[])

但是,这给了我错误:变量illegal start of an expression

另外,有人可以告诉我,我是否正在做退货声明吗?

我对不同的网站观看视频进行了一些研究。似乎我遵循了每一步。但是我仍然没有通过“传递参数”的意思 这是方法中()内部的变量。该变量是来自其他方法还是只是在编写的方法中创建?就像我上面的示例一样,变量int number是否会从我的main方法传递到我的fibcalc方法,只需在()中声明它?

2 个答案:

答案 0 :(得分:2)

fib不在范围内,因为它位于fibcalc的本地范围内。改变这样的一行:

 System.out.printf("Fibonacci #%d is %d\n",number, fibcalc(number));

答案 1 :(得分:0)

你有2种方法可以解决这个问题,首先:

System.out.printf("Fibonacci #%d is %d\n",number, fibcalc((int)fib));

或第二种方式:

public static double fibcalc(double number)

:)