变量的范围以while循环结束

时间:2016-08-19 20:36:01

标签: java variables while-loop scope

我正在尝试2在java中创建一个项目,但这是我的问题的缩影。 我在while循环中初始化一个变量,现在只要while循环结束,变量就会被取消,或者只是a = 7不会被打印。除了使用while循环之外别无选择。我有2获得已初始化的值。

package Hotel_room_reservation_system;
import java.awt.*;
import java.lang.*;
import java.io.*;
public class NewClass {

    public  NewClass()
    {
        int a;
        int z=0;
        while(z<10)
        {
            a=7;
            z++;
        }
        System.out.println(a);
    }
}

然后我创建了这个类的新对象。

当前输出

变量a可能尚未初始化

必需的输出

7

HELP。

2 个答案:

答案 0 :(得分:4)

只需初始化变量a

public NewClass() {
    int a = 0;
    int z = 0;
    while (z < 10) {
        a = 7;
        z++;
    }
    System.out.println(a);
}

public static void main(String[] args) {
    new NewClass();
}

在Java中,类和实例变量假定默认值(null0false),如果它们未手动初始化。

但是,局部变量没有默认值。除非为局部变量赋值,否则编译器将拒绝编译读取它的代码。

答案 1 :(得分:3)

java编译器抱怨变量a 可能尚未初始化。

这是因为编译器实际上没有检查循环条件以确定是否会发生循环的执行。换句话说,它不知道循环是否会设置变量。

一般来说,使用合理的默认值(例如int a=0;)初始化变量通常是个好主意。