如何在我正在制作的应用程序中公开提供下面的双变量(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;
}
});
答案 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)
您可以尝试在侦听器之外创建变量,并仅在侦听器中修改它。