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 变量的作用域以while循环结束_Java_Variables_While Loop_Scope - Fatal编程技术网

Java 变量的作用域以while循环结束

Java 变量的作用域以while循环结束,java,variables,while-loop,scope,Java,Variables,While Loop,Scope,我正在尝试用java创建一个项目,但这就是我问题的缩影。 我在一个while循环中初始化一个变量,现在while循环结束后,变量就被取消设置,或者干脆a=7就不会被打印出来。除了使用while循环,我别无选择。我得到了一个已经初始化的值 package Hotel_room_reservation_system; import java.awt.*; import java.lang.*; import java.io.*; public class NewClass { public

我正在尝试用java创建一个项目,但这就是我问题的缩影。 我在一个while循环中初始化一个变量,现在while循环结束后,变量就被取消设置,或者干脆a=7就不会被打印出来。除了使用while循环,我别无选择。我得到了一个已经初始化的值

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);
    }
}
套餐酒店客房预订系统;
导入java.awt.*;
导入java.lang.*;
导入java.io.*;
公共类新类{
公共类()
{
INTA;
int z=0;

而(z只需初始化变量
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();
}
public新类(){
int a=0;
int z=0;
而(z<10){
a=7;
z++;
}
系统输出打印项次(a);
}
公共静态void main(字符串[]args){
新类();
}
在Java中,类和实例变量如果未手动初始化,则假定默认值(
null
0
false


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

只需初始化变量
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();
}
public新类(){
int a=0;
int z=0;
而(z<10){
a=7;
z++;
}
系统输出打印项次(a);
}
公共静态void main(字符串[]args){
新类();
}
在Java中,类和实例变量如果未手动初始化,则假定默认值(
null
0
false


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

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

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);
    }
}
这是因为编译器实际上并不检查循环条件以确定循环是否会执行。换句话说,它不知道循环是否会设置变量


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

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

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);
    }
}
这是因为编译器实际上并不检查循环条件以确定循环是否会执行。换句话说,它不知道循环是否会设置变量


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

您将得到错误“变量a可能尚未初始化”因为编译器没有意识到你总是会进入while循环。它考虑了它不会进入while循环的可能性,即使在你的示例中总是这样。你需要在循环之外初始化它。但不确定为什么这是一个错误,而不是警告。@JonnyHenly问题不是他在使用它之前没有初始化它。它是我的他只是在循环中初始化,而不是在其他地方。这个副本并不能解决这个问题。@Gendarme是的,你是right@ErrorrrDetector您应该在
main()
中包含代码以及错误消息。您将收到错误“变量a可能尚未初始化”因为编译器没有意识到你总是会进入while循环。它考虑了它不会进入while循环的可能性,即使在你的示例中总是这样。你需要在循环之外初始化它。但不确定为什么这是一个错误,而不是警告。@JonnyHenly问题不是他在使用它之前没有初始化它。它是我的他只是在循环中初始化,而不是在其他地方。这个副本并不能解决这个问题。@Gendarme是的,你是right@ErrorrrDetector您应该在
main()中包含代码
以及错误信息。如宪兵在评论中所做的,说明原因将使此答案更有用/有用。thnx将接受此ans is 3 minA说明原因,如宪兵在评论中所做的,将使此答案更有用/有用。thnx将接受此ans is 3 MINT这是正确答案,应该接受。T另外两个没有解释问题与循环的关系:编译器没有检查循环条件以了解变量是否已初始化。这是正确答案,应该被接受。另外两个没有解释问题与循环的关系:编译器没有检查循环条件以了解变量是否已初始化变量是否已初始化。