我有一个私有方法“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
}
请注意,在第一种方法中仅将“私人”更改为“公共”不是我的选择
答案 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);
它有效! 谢谢!