Java 为什么可以';我不能访问while循环中的变量

Java 为什么可以';我不能访问while循环中的变量,java,netbeans,Java,Netbeans,由于某些原因,我无法从while循环中访问变量。我已经查看了其他关于这个的帖子,但是我仍然无法理解 听到我的密码: package pandacare; import java.util.Random; public class PandaCare { Random r = new Random(); int HWT; int hunger = 0; int fun = 0; int thirst = 0; int energy = 0; int hygiene = 0; int poin

由于某些原因,我无法从while循环中访问变量。我已经查看了其他关于这个的帖子,但是我仍然无法理解

听到我的密码:

package pandacare;
import java.util.Random;
public class PandaCare {

Random r = new Random();

int HWT;

int hunger = 0;
int fun = 0;
int thirst = 0;
int energy = 0;
int hygiene = 0;
int points = 0;
int coins = 1000;
int total = hunger + fun +thirst + energy + hygiene;

public void hungerWait(){
    int Low = 5;
    int High = 30;
    HWT = r.nextInt(High-Low) + Low;

    try {
        Thread.sleep(5000);
    }
    catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
    hunger --;
}

    while(hunger > 0){
       hungerWait();
    }

}

花点时间仔细查看您的代码

public class PandaCare {

    //...

    public void hungerWait() {
        int Low = 5;
        int High = 30;
        HWT = r.nextInt(High - Low) + Low;

        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        hunger--;
    }

    // This won't work, it's not a valid statement...
    while(hunger > 0){
       hungerWait();
    }

}
while(饥饿>0)
不属于任何方法。代码只能在静态块/初始化或方法中执行

您需要将循环封装在某种方法中

举个(粗糙的)例子

public class PandaCare {

    //...

    public void hungerWait() {
        int Low = 5;
        int High = 30;
        HWT = r.nextInt(High - Low) + Low;

        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        hunger--;
    }

    public void waitTillNoHungry() {        
        while(hunger > 0){
           hungerWait();
        }        
    }
}

因为while循环在任何方法之外…程序员是对的,顺便问一下,你的主要方法在哪里,你不能访问哪个变量?如果我把它放在main方法中,我说我可以访问非静态变量和非静态函数,我的main方法在Jframe中class@DaneAshman不清楚您的问题在哪里?好的,我试试,谢谢!如果我将while循环放在一个方法中,它还会始终检查括号中的内容是否正确吗@这是一个方法,如果你调用它,它将运行代码…有没有办法让这个方法始终运行@MadProgrammer但它不能在main方法@MadProgrammer中调用非静态方法