1

myInt次のコードが与えられた場合、private void jButton1fromからどのように使用できますprivate void jButton2か?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int myInt = (Integer)jSpinner1.getValue();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int b = 0;
    int c = myInt;
    do {
        try {
            Object newInstance = Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/rk","root","root");
            PreparedStatement ps = (PreparedStatement) con.prepareStatement("INSERT INTO factors VALUES(?,?,?,?,?,?)");
            ps.setString(1,jTextField7.getText());
            ps.setString(2,jTextField8.getText());
            ps.setString(3,jTextField9.getText());
            ps.setString(4,jTextField10.getText());
            ps.setString(5,jTextField11.getText());
            ps.setString(6,jTextField12.getText());

            ps.executeUpdate();

            jTextField7.setText("");
            jTextField8.setText("");
            jTextField9.setText("");
            jTextField10.setText("");
            jTextField11.setText("");
            jTextField12.setText("");
        }
        catch (Exception e) {
            System.out.println(e);
        }

        b++;
    } while(b < my);
}
4

5 に答える 5

1

myIntをフィールドに渡します。

private int myInt;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    myInt = (Integer)jSpinner1.getValue();
}


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int b = 0;
    int c=myInt;
  ...
}
于 2012-09-28T09:50:22.380 に答える
1

できません。これらは、メソッド呼び出しの期間中のみ存在するローカル変数です。

別のメソッドで値を使用する場合は、パラメーターを介して値を渡すか、オブジェクトの状態の一部になるようにインスタンス(または必要に応じて静的)変数にする必要があります。

基本的に、jButton1ActionPerformedこのメソッドには現時点では有用な目的はありません。ローカル変数に値を割り当て、すぐにスコープから外れます。

余談ですが、Javaの基本に慣れていない場合は、ユーザーインターフェイスの複雑さに対処する必要がないコンソールアプリケーションでJavaを学ぶことを強くお勧めします。言語の基本を学び、次にいくつかのコアライブラリ(コレクション、IOなど)ユーザーインターフェイスから始めます。

于 2012-09-28T09:48:50.133 に答える
0

メソッドがあったとしても、public外部からそのローカル変数にアクセスすることはできなかったでしょう。そのスコープは、メソッドを定義することだけに制限されています。

その変数をクラスのフィールドとして宣言する方がよいでしょう。

myIntメソッド内の変数はjButton1ActionPerformedインスタンスフィールドとして宣言する必要があります。そうしないと、その変数は使用されません。どこにも使用していません。

于 2012-09-28T09:49:32.590 に答える
0

唯一の方法は、ローカル変数を引数として他のプライベートメソッドに渡すことです。ローカル変数(メソッド内で宣言された変数)は、そのメソッドのみに限定されます。それらを引数として渡すか返す場合を除いて、他のメソッドで直接使用することはできません。そして、ええ、それがプライベート/パブリック/保護/デフォルト/静的にマークされたメソッドであるかどうかは関係ありません。

于 2012-09-28T09:49:52.613 に答える
0

変数は変数スコープに関連付けられています。この場合、myIntは1つのメソッドスコープで宣言されており、別のメソッドスコープからアクセスしようとしています。これは不可能です。

これを回避するには、次のように、myInt変数をグローバル(クラス)変数に昇格させる必要があります。

private int myInt;
...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    this.myInt = (Integer)jSpinner1.getValue();
}
...

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   int b = 0;
   int c= this.myInt;
...

これは、クラススコープ内で宣言されたものすべてがこの変数にアクセスできることを意味します。つまり、すべてのメソッドから変数にアクセスできるようになります。

于 2012-09-28T09:51:08.433 に答える