【问题标题】:Java - How to use changing/modified variables in several methods in a class?Java - 如何在一个类的多个方法中使用更改/修改的变量?
【发布时间】:2012-03-12 22:59:37
【问题描述】:

当我想要一种方法来初始化变量而另一种方法来使用该初始化变量时,局部变量的概念有点难以理解。

例子

public class abc

public int startAngle;

public void angleMethod(){
startAngle = 90;
angle = startAngle;
}

public void methodTwo(){
anotherVar = angle + 10;   //I want this angle to be initialized to 90

是否可以通过第一种方法将角度初始化为 90?我想要这个的原因是我可以将我想要对变量做的事情分解成更小的单个方法。

我尝试在第二种方法中将变量作为参数传递,类似于:

public void methodTwo(int angle)

但这没有用。

我读过使用

 this.angle = angle 

但我不确定这是做什么或它的目的。我相信我确实需要对变量做一些事情,然后在我的程序的其他部分使用这些修改过的变量。

谁能帮帮我?谢谢。

【问题讨论】:

  • 请告诉我们更多关于您正在尝试做什么以及为什么看起来令人困惑的细节(至少在我看来)。请也向我们展示您的真实代码。类是什么时候构造的,是什么构造的?何时以及由谁调用这两种方法,它们是否总是一个接一个地调用?也许您正在寻找使用常量值?我真的说不出来。
  • 您显示的“代码”中没有任何地方声明变量angle

标签: java variables instance-variables local-variables


【解决方案1】:

我认为您不了解局部变量是什么。在您的示例中,angleMethod() 中的 anglemethodTwo() 中的 angle 不同(据我所知,根据提供的代码,尽管我看不到您在哪里声明角度)。

我认为你的目标是这样的:

public class abc
{
    //Declare class-scoped variables, accessible by all class methods.  Could be public or private.
    public int startAngle;

    //constructor - initialize vars here
    public abc()
    {
        startAngle = 90;
    }

    public void method()
    {
        int angleVar = startAngle + 10; //startAngle will be 90.
        //angleVar will be 100;
        //angleVar can only be accessed inside this method.
    }
}

【讨论】:

  • 感谢您的回复,现在更清楚了,我很傻
【解决方案2】:

如果你想在创建对象时初始化一个属性,你有两种选择:

  • 默认值

    int startAngle = 90
    
  • (所有)构造函数中的赋值

除此之外,如果你想检查其他方法是否在当前方法之前被调用,你应该自己编程(例如,必须首先调用的方法设置一个属性,然后另一个检查它) .

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多