在java中使用带有局部变量的显示方法

在java中使用带有局部变量的显示方法,java,Java,因此,我必须为发票编写一个程序,在这里我在本地定义变量,而不是全局定义变量。所以我现在的样子有点像这样 public void setAmount(int anyAmount) { int amount; amount = anyAmount; } 然后我这样做显示方法,得到一个错误,说找不到符号 public void displayInvoice() { System.out.println("Amount: " + amount); 我可以很容易地在全球范围内做到这一点,但在这方面有

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

public void setAmount(int anyAmount)
{ 
int amount;
amount = anyAmount;
}
然后我这样做显示方法,得到一个错误,说找不到符号

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

我可以很容易地在全球范围内做到这一点,但在这方面有困难。谢谢大家!

当您在函数内声明变量时,例如在setAmount中,它只在该函数执行时存在;它只存在于{和}之间。这就是为什么以后在第二个函数中无法引用它,因为它已经不存在了。本质上,您所做的是设置它,然后立即消除它,不需要在代码上下功夫,只需通过程序中分配和使用内存的方式

解决这个问题的方法是,如您所说,使用一个“全局”变量,或者在设置它之后将其传回,并将其放入另一个变量中,然后将其发送到displayInvoice函数。最后一个方法要求setAmount和displayInvoice本身是更大函数的一部分,中间变量在其中声明。总的来说,正如你所说的,一个“全球性的”解决方案是最简单的,也可能是最好的解决方案

不工作示例:

main() {
   int amount = 0;
   amount = setAmount(5);
   displayInvoice(amount);
}
尽管如此,您还是可以放弃setAmount函数,因为您可以看到它是相当冗余的。保持设定的金额,您需要将其更改为

Public int setAmount(int anyAmount)

当你在一个函数中声明一个变量时,比如在你的setAmount中,它只在函数执行的时候存在;它只存在于{和}之间。这就是为什么以后在第二个函数中无法引用它,因为它已经不存在了。本质上,您所做的是设置它,然后立即消除它,不需要在代码上下功夫,只需通过程序中分配和使用内存的方式

解决这个问题的方法是,如您所说,使用一个“全局”变量,或者在设置它之后将其传回,并将其放入另一个变量中,然后将其发送到displayInvoice函数。最后一个方法要求setAmount和displayInvoice本身是更大函数的一部分,中间变量在其中声明。总的来说,正如你所说的,一个“全球性的”解决方案是最简单的,也可能是最好的解决方案

不工作示例:

main() {
   int amount = 0;
   amount = setAmount(5);
   displayInvoice(amount);
}
尽管如此,您还是可以放弃setAmount函数,因为您可以看到它是相当冗余的。保持设定的金额,您需要将其更改为

Public int setAmount(int anyAmount)

当你在一个方法中声明一个变量时,它就变成了局部变量,这意味着它只在该方法中可见,这就是为什么你会得到那个错误,你可以通过使它成为全局变量来纠正它。

当你在一个方法中声明一个变量时,它变成了局部变量,这意味着它只在该方法中可见,这就是为什么你会得到那个错误,您可以通过将其设置为全局变量来纠正这一点。

您确定您正确阅读了任务吗?您应该将数量声明为类级变量,然后进行设置并获得其结果。要求在家庭作业的一部分中本地定义变量?@nsgulliver这不是Java中的全局变量吗?它是用于作业的,出于某种原因,他想让我们在当地做。我们已经用一个全局变量做了其他工作,但我想这次没有。书中的问题其实并不重要,但在指导过程中,他补充说,不要定义全局变量。你确定你正确阅读了任务吗?你应该将数量声明为类级变量,然后进行设置并得到结果。要求在家庭作业中局部定义变量?@nsgulliver这不是Java中的全局变量吗?这是为了任务,出于某种原因,他希望我们在本地完成。我们已经用一个全局变量做了其他工作,但我想这次没有。实际上,书中的问题并不重要,但在说明中,他补充说,不要在全球范围内进行定义