0

所以我必须为发票编写一个程序,在其中我在本地而不是全局定义变量。所以它有点像我的样子。

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

然后我做这样的显示方法并得到一个错误说找不到符号

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

我可以在全球范围内轻松地做到这一点,但在这方面遇到了麻烦。谢谢!

4

2 回答 2

3

当你在一个函数中声明一个变量时,比如在你的 setAmount 中,它只存在于该函数执行期间;它只存在于 { 和 } 之间。这就是为什么您稍后无法在第二个函数中引用它,因为它不再存在。本质上,您所做的是设置它,然后立即摆脱它,无需对您的代码进行任何努力,而只是通过内存在程序中分配和使用的方式。

解决此问题的方法是使用您所说的“全局”,或者在设置后将其传回,并将其放入另一个变量中,然后将其发送到 displayInvoice 函数。最后一种方法要求 setAmount 和 displayInvoice 本身是更大函数的一部分,并且在其中声明中间变量。总而言之,鉴于您所解释的内容,您所说的“全球”是最简单且可能最好的解决方案。

不工作的例子:

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

但是,在这样做时,您不妨放弃 setAmount 函数,因为您可以看到它相当多余。保持设定的金额,您需要将其更改为

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

当您在方法中声明一个变量时,它成为本地变量,这意味着它仅在该方法中可见,这就是您收到该错误的原因,您可以通过使其成为全局变量来纠正它。

于 2013-02-26T21:47:49.533 回答