2

以下の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

4 に答える 4

3

1つのアプローチは、次のようなクラスメンバー変数を作成することです。

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

外部からアクセスしたい場合は、パブリックゲッターメソッドを作成します。

public double getMon() {
  return mon;
}

getSumは、次の1つのメソッドで表すことができます。

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 に答える