2013-02-26 27 views
0

所以我必須編寫一個發票的程序,我在本地而不是全局地定義變量。所以它看起來就像我擁有它的方式。在java中使用局部變量的顯示方法

public void setAmount(int anyAmount) 
{ 
int amount; 
amount = anyAmount; 
} 

我再做這樣的顯示方法,並得到一個錯誤說找不到符號

public void displayInvoice() 
{ 
System.out.println("Amount: " + amount); 

我可以很容易地做到這一點全球範圍內,但有這個煩惱。謝謝!

+2

您確定自己的任務是否正確? – James 2013-02-26 21:41:36

+3

您應該將金額聲明爲類級別變量,然後設置它並獲得它的結果 – nsgulliver 2013-02-26 21:41:50

+0

要求變量在本地定義爲家庭作業的一部分嗎? – rgettman 2013-02-26 21:42:35

回答

3

當你在一個函數內聲明一個變量時,比如在你的setAmount中,它只會在該函數執行時才存在;它只存在於{和}之間。這就是爲什麼你以後不能在第二個函數中引用它,因爲它不再存在。從本質上講,你正在做的是設置它,然後立即擺脫它,通過你的代碼沒有努力,但只是通過內存分配和在程序中使用的方式。

來解決這個問題是使用「全球」如你所說,或者將其傳回你設置後,並把它變成另一個變量,然後您可以發送到您的displayInvoice功能的方式。最後一種方法要求setAmount和displayInvoice本身是更大函數的一部分,並且中間變量在其中聲明。總而言之,正如你所說的,「全球化」是最簡單也是最好的解決方案,因爲你已經解釋過了。

Unworking例子:

main() { 
    int amount = 0; 
    amount = setAmount(5); 
    displayInvoice(amount); 
} 

這樣做雖然,你不妨放棄setAmount功能,你可以看到它是相當多餘。保持設定的金額,你需要在聲明它成爲本地的含義,這只是在方法可見的方法中的變量將其更改爲

Public int setAmount(int anyAmount) 
0

,這就是爲什麼你得到這個錯誤,你可以糾正通過使其成爲全球性的。