从私有方法

时间:2016-04-17 18:55:50

标签: java netbeans

我有一个私有方法“questionSubmitActionPerformed”,它创建一个变量“input”。我想在另一个方法中使用这个变量,称为“compareAnswers”。由于我选择的IDE(Netbeans)不允许我将私有更改为public,有没有办法将变量传递给方法?这是我的代码的摘录:

 private void questionSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                               
    //gets input and clears answer area
    input = questionAnswer.getText();
    //calls the comparison, returns Yes or No 
    compareAnswers();
 }

 private void compareAnswers() {
    //compare input to the ArrayList
}

请注意,在第一种方法中仅将“私人”更改为“公共”不是我的选择

3 个答案:

答案 0 :(得分:0)

我认为你对modifiers and methods非常困惑。您的两个方法似乎都是in the same class。您想要做的是将值传递给另一个method 它与public or private(修饰符)无关,你应该做的是什么 在您的方法中设置parameter,在您的情况下

private void compareAnswers(String input) {
    //compare input to the ArrayList
}

您可以执行以下方法:compareAnswers("abc");

modifiers更改了visibility of the properties,如果private,那么您将无法access来自another class的这些属性。详细了解modifiers http://www.tutorialspoint.com/java/java_modifier_types.htm

答案 1 :(得分:0)

我们假设你在课程abc中拥有所有这些代码所以看起来应该是这样的:

class abc{

    private String Input;
    //Some other variables declared.

    //some constructors

     private void questionSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                               
        //gets input and clears answer area
        input = questionAnswer.getText();
        //calls the comparison, returns Yes or No 
        compareAnswers();
     }

     private void compareAnswers() {
        //compare input to the ArrayList
    }

    //Some other methods.

}

如果这是程序的结构,那么我不明白为什么你需要将变量传递给另一个方法?变量input已在方法compareAnswers()中可访问。

现在,仍然坚持将变量传递给方法compareAnswers,然后将方法的签名更改为:

private void compareAnswers(String input)

并将questionSubmitActionPerformed内的方法称为:

compareAnswers(input);

评论后

根据您的评论所述,我了解您的程序结构将是这样的:

class abc{

    //Some other variables declared.

    //some constructors

    public void someMethod{
        //Some things done;
        String input;
        //Some other things done;
    }

     private void questionSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                               
        //gets input and clears answer area
        input = questionAnswer.getText();
        //calls the comparison, returns Yes or No 
        compareAnswers();
     }

     private void compareAnswers() {
        //compare input to the ArrayList
    }

    //Some other methods.

}

如果这是条件,那么你如何在第一种情况下编译这个类?由于此处变量input是方法someMethod的局部变量,并且在方法someMethod完成执行后它不存在。

为了能够访问方法input之外的变量someMethod,可以从input返回someMethod变量并将其存储为实例变量。

或者通过将变量input声明为第一个实例变量,就像我在此编辑之前的初始代码中所例证的那样。

或者从questionSubmitActionPerformed内部调用someMethod并将变量input作为参数传递给此方法。

答案 2 :(得分:0)

基于3kings的回答作为答案:

我用过

 compareAnswers(String input) {}

结合使用
 compareAnswers(input);

它有效! 谢谢!