可以在方法之外使用局部变量吗?

Can a local variable be used out of a method?

我遇到了一个关于局部变量的问题。

以下不是我的原始代码,但我用一个简单的例子来表达我的问题:

import java.util.Scanner;
public static void main(String[] args) {
    Scanner userScan=new Scanner(System.in);    
    do{
        int input1=userScan.nextInt();
    }while(input1>10);
}

我的目的是让用户输入一个在我预期范围内的整数。 如果输入的数字不符合规则,我希望用户可以重新输入,直到符合为止。但是,"input1"是一个局部变量,所以在while表达式中是无效的。但我不希望用户再次重新输入整数。只使用一个变量会更好。有没有人对此有建议或其他可以实现这个想法的方法? 谢谢!

    public static void main(String[] args) 
   {
        Scanner userScan=new Scanner(System.in);    
        int input1;
        do{
            input1=userScan.nextInt();
        }while(input1>10);
    }

只需在 do while 循环范围之外声明 input1

你为什么不这样做呢? :D delcare input1在do...while循环外,可以在while语句中使用。

import java.util.Scanner;
    public static void main(String[] args) {
        Scanner userScan=new Scanner(System.in);  
        int input1 = 0;
        do{
            input1=userScan.nextInt();
        }while(input1>10);
    }

问题出在您的 input1 变量范围,即您的 input1 变量的范围仅限于 do while 块(即 { } 代码),所以只需在循环外声明变量即可。

int input1 = 0;//scope is now wider, not just limited to the loop
do {
   input1=userScan.nextInt();
} while(input1>10);