2012-11-21 177 views
0
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是局部變量而不是類變量這一事實有關?如果是這樣,那麼如何使它成爲一個類變量? 我試着移動我的main方法上方的變量fibnumber。像...

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方法,只需在()中聲明它即可。

+0

你可能想要添加一個標籤對應於你正在使用的實際語言,而不是一個無用的過度概括標籤。 – 2012-11-21 19:13:36

+0

你也可能想把return語句放到你正在使用的方法中,否則你將不會返回任何東西 – Vogel612

+0

添加java標記*以及將return語句放入我正在使用的方法中是什麼意思?這不是'fibcalc'方法嗎? – user1714873

回答

2

fib不在範圍內,因爲它是本地fibcalc。更改這樣的行:

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

非常感謝,這工作。由於格式說明符的原因,我還必須將第二個'%d'更改爲'%f'。但是,你能解釋爲什麼我必須使用'fibcalc(number)'而不是'fibcalc(fib)'?我認爲()中的變量是我想從'fibcalc'中返回的東西。 – user1714873

+0

不,括號內的變量是要傳遞給方法的參數。 'fib'是在'fibcalc'中聲明的局部變量,並且'return fib'表示你想返回'fib'的值。如果以後想要在'main'中重用該值,則必須將其分配給另一個變量:'double result = fibcalc(number)'。 – Axel

0

你有2種方法來解決這個問題,第一:

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

或第二種方式:

public static double fibcalc(double number) 

:)

+0

沒有工作,仍然收到相同的錯誤。我用第一種方式嘗試,然後是你們建議的第二種方式,然後一起。沒有工作。仍然得到相同的舊錯誤。 '錯誤:找不到符號System.out。printf(「Fibonacci#%d是%d \ n」,number,fibcalc(fib)); ^符號:變量fib位置:類dlin_Fibonacci 1錯誤'我確定這是事實,由於某種原因我的'main'方法不能調用我的'fibcalc'方法 – user1714873

+0

如果我正確地理解了這個問題,這個問題與'fib'的範圍,而不是整數與雙打。 – Vulcan

+0

@ user1714873陌生人在這裏我得到了同樣的錯誤,但問題解決了兩種方式,也許Vucan有理由,'私人靜態雙纖維= 0';'是在同一班? – ademar111190