Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何制作一个可以在任何地方使用的变量?_Java_Variables_Loops - Fatal编程技术网

Java-如何制作一个可以在任何地方使用的变量?

Java-如何制作一个可以在任何地方使用的变量?,java,variables,loops,Java,Variables,Loops,我想做一个变量,我可以在我的方法内使用它来在我的方法外更改这个变量。作为视觉:(顺便说一下,我导入了scanner类) 出于某种原因,它说内部类可以访问局部变量quitVar,但它需要声明,我已经声明了。非常感谢您的帮助。这是因为在方法中定义了。本地内部类的规则是: 本地类可以访问其封闭类的成员 此外,局部类可以访问局部变量。但是, 局部类只能访问声明为final的局部变量 在本例中,quitVar是局部变量,因此需要将其声明为final,以便在局部类中访问它。但如果您声明它为final,则不能

我想做一个变量,我可以在我的方法内使用它来在我的方法外更改这个变量。作为视觉:(顺便说一下,我导入了scanner类)

出于某种原因,它说内部类可以访问局部变量quitVar,但它需要声明,我已经声明了。非常感谢您的帮助。

这是因为在方法中定义了。本地内部类的规则是:

本地类可以访问其封闭类的成员

此外,局部类可以访问局部变量。但是, 局部类只能访问声明为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