java - 错误: cannot find symbol

标签 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)

我想从我的 fibcalc 方法返回 fib 的值,这样我就可以在我的 main 方法中打印它。

有人知道为什么不让我吗?

我尝试仅使用变量fib,但结果是相同的错误消息。 这是否与变量 fib 是局部变量而不是类变量有关?如果是,那么如何使其成为类变量? 我尝试将变量 fibnumber 移到我的 main 方法上方。类似...

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

public static void main(String arg[])

但是,这给了我错误:变量的表达式非法开始

另外,有人可以告诉我 return 语句是否正确吗?

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

最佳答案

fib 不在范围内,因为它是 fibcalc 的本地函数。像这样更改行:

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

关于java - 错误: cannot find symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500406/

相关文章:

java - 如何从Java网络获取某些数据类型作为消息id

java - 如何将多个文件选择器的值添加到 jtable

C++ 引用参数函数

javascript - 为什么第二个函数参数在注释 block 中?只是好奇

javascript - Javascript如何处理函数参数

java - 为什么 replaceAll 不起作用?

java - 数据流 GCS 到 BigQuery - 如何每个输入输出多行?

java - 如果调用matrix2.getElement(int y, int x),我应该在 getElement 方法中输入什么

ruby - 直通方法

Python编程: Classes