Java 在另一个私有函数中访问私有函数的变量

Java 在另一个私有函数中访问私有函数的变量,java,netbeans-6.9,Java,Netbeans 6.9,给定以下代码,如何在private void jButton1fromprivate void jButton2中使用myInt private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int myInt = (Integer)jSpinner1.getValue(); } private void jButton2Ac

给定以下代码,如何在
private void jButton1
from
private void jButton2
中使用
myInt

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);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
int myInt=(整数)jSpinner1.getValue();
}
私有void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
int b=0;
int c=myInt;
做{
试一试{
Object newInstance=Class.forName(“com.mysql.jdbc.Driver”).newInstance();
Connection con=(Connection)DriverManager.getConnection(“jdbc:mysql://localhost/rk“,”根“,”根“);
PreparedStatement ps=(PreparedStatement)con.prepareStatement(“插入因子值(?,,,,,,,,?)”;
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(“”);
}
捕获(例外e){
系统输出打印ln(e);
}
b++;
}而(b
你不能。这些是仅在方法调用期间存在的局部变量

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

基本上,您的
jButton1ActionPerformed
方法目前没有任何有用的用途-它将一个值赋给一个局部变量,然后该变量立即超出范围


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

即使您的方法是公开的,您也无法在外部访问它的局部变量。。其范围仅限于定义方法

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


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

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

将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;
  ...
}
变量绑定到一个。在本例中,
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;
...

将意味着在类范围内声明的任何内容都可以访问此变量,这意味着您的变量现在可以从所有方法访问。

jButton1ActionPerformed需要获取微调器值并将其存储在变量中。在jButton2中,我想使用存储的value@radish:Right-听起来它需要是对象状态的一部分,因此是一个实例字段。不过,如果这类事情让你大吃一惊,最好还是在控制台应用程序中学习Java的基础知识。谢谢你的帮助suggession@radish:对。编写用户界面很难做好,在学习过程中尝试这样做会减慢学习过程,并可能会给你带来一些坏习惯。