1

给定以下代码,我如何使用myIntin 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

你不能。这些是仅在方法调用期间存在的局部变量。

如果您想在另一个方法中使用该值,则必须通过参数将其传递,或者将其设为实例(或静态,如果必须)变量,使其成为对象状态的一部分。

基本上,您的jButton1ActionPerformed方法目前没有任何用处 - 它正在为局部变量分配一个值,然后立即超出范围。

顺便说一句,如果您不熟悉 Java 的基础知识,我强烈建议您在控制台应用程序中学习它们,您不需要处理复杂的用户界面。学习语言的基础知识,然后从用户界面开始学习一些核心库(集合、IO 等)。

于 2012-09-28T09:48:50.133 回答
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 回答
0

即使你有你的方法public,你也无法在外面访问它的局部变量。它的范围仅限于定义方法。

最好将该变量声明为类中的字段..

myInt您的方法中的变量jButton1ActionPerformed应声明为实例字段,否则将不会使用该变量..您没有在任何地方使用它..

于 2012-09-28T09:49:32.590 回答
0

唯一的方法是将局部变量作为参数传递给另一个私有方法。局部变量(在方法内声明的变量)仅限于该方法。除非您将它们作为参数传递或返回它们,否则您不能直接在其他方法中使用它们。是的,它是否是私有/公共/受保护/默认/静态标记的方法并不重要。

于 2012-09-28T09:49:52.613 回答
0

变量与变量作用域相关联。在这种情况下,myInt在一个方法范围中声明,然后您尝试从不同的方法范围访问它。这是不可能的。

要绕过它,您必须将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 回答