2

如何在我正在制作的整个应用程序中公开使用下面的双变量(周一、周二、周三等)?例如,如果我在最后一个大括号之后,则无法访问 mon 变量。有任何想法吗?

    finalize.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){

                double mon = Double.parseDouble(monday.getText());
                double tues = Double.parseDouble(tuesday.getText());
                double wed = Double.parseDouble(wednesday.getText());
                double thurs = Double.parseDouble(thursday.getText());
                double fri = Double.parseDouble(friday.getText());
                double sat = Double.parseDouble(saturday.getText());
                double sun = Double.parseDouble(sunday.getText());

                double sum = mon + tues + wed + thurs + fri + sat + sun;



           }
    });
4

4 回答 4

3

一种方法是创建类成员变量,如下所示:

private double mon = 0.0;
private double tues = 0.0;
// etc.

如果您希望从外部访问它们,请创建公共 getter 方法:

public double getMon() {
  return mon;
}

getSum 可以用一个方法表示:

public double getSum() {
     return mon + tues + wed + thurs + fri + sat + sun;
}

然后不要忘记删除 actionPerformed 方法中的本地声明:

mon = Double.parseDouble(monday.getText());
于 2012-08-12T14:18:53.053 回答
2

您必须在类级别将它们声明为字段。

内部类可以访问封闭方法的最终局部变量,但是当您更改值时,这在您的情况下不起作用。

class MyClass {

    double mon = 0.;  // <- declare it as a field

    void myMethod() {
      finalize.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){
                mon = Double.parseDouble(monday.getText());  // <- accessible
           }
      });
      System.out.println(mon);  // <- accessible
    }
}
于 2012-08-12T14:17:29.527 回答
2

在类级别上定义它们。例如,如果您的班级被命名MyClass,请执行以下操作:

class MyClass {
    public mon;
    //......
    public void actionPerformed(ActionEvent ae) {
    mon = Double.parseDouble(monday.getText());
    //......
    } 
}

但从不定义公共变量。改用 bean 表示法:

class MyClass {
    private mon;
    //......
    public void actionPerformed(ActionEvent ae) {
    mon = Double.parseDouble(monday.getText());
    //......
    } 

    public double getMon() {
         return mon;
    }
}
于 2012-08-12T14:19:53.083 回答
1

您可以尝试在侦听器之外创建变量,并且只在侦听器中修改它。

于 2013-12-27T20:32:59.763 回答