2012-10-29 72 views
1

试图编写一个打印斐波那契数列的简单程序。我想创建一个名为fibNumber的方法来计算斐波那契数列的值,然后我想在run()方法中使用for循环来打印该值15次。我遇到的麻烦是for循环中的println方法。 Eclipse表示“n无法解析为值”,“我无法解析为值”。我认为我在宣布变量方面涵盖了所有的基础。我错过了什么吗?
在Eclipse中无法解析为变量错误

我想要写的是一路攀升至F15

F0 = 0
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5

import acm.program.*; 


public class FiccononicSequence extends ConsoleProgram { 

public void run(){ 
    println("This program prints out the Fibonacci sequence."); 

    for (i = 1; i <= 15; i++){ 

     println("F" + i + " = " + fibNumber(n)); 

    } 




} 


private int fibNumber(int n){ 
    if (n == 0){ 
    return 0; 
    }else{ if (n == 1){ 
    return 1; 
    }else{ 
    return fibNumber(n - 1) + fibNumber(n - 2); 




}  
+0

我有点困惑。 println(“F”+ i +“=”+ fibNumber(i));包含方法fibNumber的值?难道它不仅仅是打印出for循环中我的值的增加吗? –

+0

即使在我将fibNumber(n)更改为fibNumber(i)后,Eclipse仍然给我一个“我无法解析为变量”的错误。我不确定错误是什么。 –

+0

检查AmitD,Quoi答案和我的。您缺少将'i'变量声明为'int'。 –

回答

2

尝试......

-这里的问题是关于变量scope

-i应宣布int类型,这是本地run()方法n代替的,如nfibNumber()方法另一个局部变量

-in完全在不同范围并且无形到彼此。

for (int i = 1; i <= 15; i++){ 

     println("F" + i + " = " + fibNumber(i)); // i should be here. 

    } 
0

什么是“n”?你应该在那里使用“我”而不是“n”。

0

问题是你如何调用fibnumber方法,因为n变量没有在run方法方面的任何地方宣称:

for (int i = 1; i <= 15; i++){ 
    println("F" + i + " = " + fibNumber(n)); //what's n? 
} 

要解决它,只需发送i变量:

for (int i = 1; i <= 15; i++){ 
    println("F" + i + " = " + fibNumber(i)); //now it compiles! 
} 
+0

不,它不会'i = 1'应该是'int i = 1' –

+0

@AmitD我想你写了评论,而我修复了我的答案。 –

0

您需要在定义i for循环,并把它传递给fibNumber

for (int i = 1; i <= 15; i++){<-- Define i 
    println("F" + i + " = " + fibNumber(i));<-- pass `i ` 
}