Java-如何制作一个可以在任何地方使用的变量?
我想做一个变量,我可以在我的方法内使用它来在我的方法外更改这个变量。作为视觉:(顺便说一下,我导入了scanner类) 出于某种原因,它说内部类可以访问局部变量quitVar,但它需要声明,我已经声明了。非常感谢您的帮助。这是因为在方法中定义了。本地内部类的规则是: 本地类可以访问其封闭类的成员 此外,局部类可以访问局部变量。但是, 局部类只能访问声明为final的局部变量 在本例中,Java-如何制作一个可以在任何地方使用的变量?,java,variables,loops,Java,Variables,Loops,我想做一个变量,我可以在我的方法内使用它来在我的方法外更改这个变量。作为视觉:(顺便说一下,我导入了scanner类) 出于某种原因,它说内部类可以访问局部变量quitVar,但它需要声明,我已经声明了。非常感谢您的帮助。这是因为在方法中定义了。本地内部类的规则是: 本地类可以访问其封闭类的成员 此外,局部类可以访问局部变量。但是, 局部类只能访问声明为final的局部变量 在本例中,quitVar是局部变量,因此需要将其声明为final,以便在局部类中访问它。但如果您声明它为final,则不能
quitVar
是局部变量,因此需要将其声明为final
,以便在局部类中访问它。但如果您声明它为final,则不能递增
如果希望此变量可访问,请将其定义为而不是局部变量。这是因为在方法内部定义的。本地内部类的规则是:
本地类可以访问其封闭类的成员
此外,局部类可以访问局部变量。但是,
局部类只能访问声明为final的局部变量
在本例中,quitVar
是局部变量,因此需要将其声明为final
,以便在局部类中访问它。但如果您声明它为final,则不能递增
如果希望此变量可访问,请定义为而不是局部变量。在main()方法之外声明变量
quitVar
,并将变量声明为static
在main()方法之外声明变量
quitVar
,并将变量声明为static
其他人正在为您提供解决方案,但实际上您试图做的并不是一个好主意 全局变量被大多数开发人员广泛认为是一种反模式,所以也许我们还可以做些别的事情 您正在递增某些内容,但正在测试1,因此如果它被调用两次,您的代码将不会触发 如果将int更改为布尔值,则将其作为quitter的成员变量,并使用访问器,这样效果会更好
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
class IWantToQuit {
private boolean hasQuit = false;
public void quit() {
hasQuit = true;
}
boolean hasQuit() {
return hasQuit;
}
}
IWantToQuit quiter = new IWantToQuit();
while (!quiter.hasQuit()) {
System.out.println("HELLO");
System.out.println("Type QUIT to quit.");
String choice = scan.next();
if (choice.equals("QUIT")) {
quiter.quit();
}
}
}
其他人正在为你提供解决方案,但实际上你想做的并不是一个好主意 全局变量被大多数开发人员广泛认为是一种反模式,所以也许我们还可以做些别的事情 您正在递增某些内容,但正在测试1,因此如果它被调用两次,您的代码将不会触发 如果将int更改为布尔值,则将其作为quitter的成员变量,并使用访问器,这样效果会更好
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
class IWantToQuit {
private boolean hasQuit = false;
public void quit() {
hasQuit = true;
}
boolean hasQuit() {
return hasQuit;
}
}
IWantToQuit quiter = new IWantToQuit();
while (!quiter.hasQuit()) {
System.out.println("HELLO");
System.out.println("Type QUIT to quit.");
String choice = scan.next();
if (choice.equals("QUIT")) {
quiter.quit();
}
}
}
如果我不能增加它,我还能用“=”给它赋值吗?@Jacob:如果你把它声明为final,你甚至不能用=.Ok赋值。如何将变量定义为实例变量而不是本地变量?+1,但是`在上一个示例中,PhoneNumber构造函数访问成员LocalClassExample.regularExpression`在您的答案中没有意义,因为它脱离了上下文hihi@nachokk:修好了。我只是在回答中从链接复制了它。如果我不能增加它,我还能用“=”给它赋值吗?@Jacob:如果你声明它为final,你甚至不能用=”赋值。好的。如何将变量定义为实例变量而不是本地变量?+1,但是`在上一个示例中,PhoneNumber构造函数访问成员LocalClassExample.regularExpression`在您的答案中没有意义,因为它脱离了上下文hihi@nachokk:修好了。我只是从链接上抄下来回答。@Nambari是的,我当然不知道xD@Nambari是的,我承认我不知道xD