我如何公开这些双打?

时间:2012-08-12 14:15:12

标签: java double

如何在我正在制作的应用程序中公开提供下面的双变量(mon,tues,wed等)?例如,如果我追踪最后一个花括号,则无法接收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 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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
    }
}

答案 2 :(得分: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;
    }
}

答案 3 :(得分:1)

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