2012-10-29 38 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 ` 
}