鉴于以下代码,如何在myInt
的{{1}}中使用private void jButton1
?
private void jButton2
答案 0 :(得分:1)
你做不到。这些是局部变量,仅在方法调用期间存在。
如果你想在另一个方法中使用该值,你必须通过参数传递它,或者使它成为实例(或静态,如果你必须)变量,这样它就是对象状态的一部分。
基本上,你的jButton1ActionPerformed
方法目前没有用处 - 它为一个局部变量赋值,然后立即超出范围。
顺便说一句,如果您不熟悉Java的基础知识,我会强烈建议您在控制台应用程序中学习它们,在这些应用程序中您不需要处理用户界面的复杂性。学习该语言的基础知识,然后在用户界面上启动一些核心库(集合,IO等)然后。
答案 1 :(得分: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;
...
}
答案 2 :(得分:0)
即使您拥有方法public
,也无法在外部访问它的局部变量。它的范围仅限于定义方法..
最好将该变量声明为类中的字段..
方法myInt
中的变量jButton1ActionPerformed
应声明为实例字段,否则不会使用该变量..您没有在任何地方使用它。
答案 3 :(得分:0)
唯一的方法是将局部变量作为参数传递给另一个私有方法。 局部变量(在方法中声明的变量)仅限于该方法。除非您将它们作为参数传递或返回它们,否则您无法直接在其他方法中使用它们。 是的,如果它是私人/公共/受保护/默认/静态标记方法无关紧要。
答案 4 :(得分:0)
变量与Variable Scope相关联。在这种情况下,myInt
在一个方法范围内声明,然后您尝试从不同的方法范围访问它。这是不可能的。
要绕过它,您必须将myInt
变量提升为Global(Class)变量,如下所示:
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;
...
这意味着在类范围内声明的任何内容都可以访问此变量,这意味着现在可以从所有方法访问您的变量。