0

そのため、変数をグローバルではなくローカルに定義する請求書用のプログラムを作成する必要があります。だから、私が持っている方法はこのように見えます。

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

次に、このような表示方法を実行すると、シンボルが見つからないというエラーが表示されます

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

私はこれをグローバルに簡単に行うことができますが、これには問題があります。ありがとうございました!

4

2 に答える 2

3

setAmount などの関数内で変数を宣言すると、その変数はその関数が実行されている間だけ存在します。{ と } の間にのみ存在します。そのため、もう存在しないため、2 番目の関数で後で参照することはできません。本質的に、あなたがやっていることは、それを設定し、すぐにそれを取り除くことです。コードに手を加える必要はありませんが、単にプログラムでメモリが割り当てられて使用される方法によって行われます。

これを回避する方法は、あなたが言ったように「グローバル」を使用するか、設定後にそれを戻し、それを別の変数に入れ、それをdisplayInvoice関数に送信することです。最後の方法では、setAmount と displayInvoice 自体がより大きな関数の一部であり、中間変数がその中で宣言されている必要があります。全体として、あなたが言ったように「グローバル」は、あなたが説明したことを考えると、最も簡単でおそらく最良の解決策です。

動かない例:

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

ただし、setAmount 関数はかなり冗長であるため、setAmount 関数を使用しない方がよいでしょう。設定した金額を維持し、次のように変更する必要があります

Public int setAmount(int anyAmount)
于 2013-02-26T21:42:52.870 に答える
0

メソッド内で変数を宣言すると、ローカルになり、そのメソッドでのみ表示されます。そのため、エラーが発生しています。グローバルにすることで修正できます。

于 2013-02-26T21:47:49.533 に答える