所以我必须为发票编写一个程序,我在本地定义变量而不是全局变量。所以它看起来像我拥有它的方式。
public void setAmount(int anyAmount)
{
int amount;
amount = anyAmount;
}
然后我按照这样做显示方法并得到一个错误,说找不到符号
public void displayInvoice()
{
System.out.println("Amount: " + amount);
我可以轻松地在全球范围内做到这一点,但遇到麻烦。谢谢!
答案 0 :(得分:3)
在函数内部声明变量时,例如在setAmount中,只有在该函数执行时才存在;它只存在于{和}之间。这就是为什么你以后在第二个函数中无法引用它,因为它不再存在。从本质上讲,你正在做的是设置它,然后通过你的代码不费力地立即删除它,而只是通过内存在程序中分配和使用的方式。
解决这个问题的方法是使用你所说的“全局”,或者在设置之后将其传回,并将其放入另一个变量中,然后将其发送到displayInvoice函数。最后一个方法要求setAmount和displayInvoice本身是一个较大函数的一部分,并在其中声明中间变量。总而言之,正如您所说,“全球”是最简单的,也可能是最佳解决方案。
不工作的例子:
main() {
int amount = 0;
amount = setAmount(5);
displayInvoice(amount);
}
虽然这样做,你也可以放弃setAmount函数,因为你可以看到它是相当多余的。保持设定金额,您需要将其更改为
Public int setAmount(int anyAmount)
答案 1 :(得分:0)
当你在一个方法中声明一个变量时,它变成局部意味着它只在那个方法中可见,这就是你得到那个错误的原因,你可以通过使它成为全局来纠正它。