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_Netbeans - Fatal编程技术网

Java 如何使一行代码运行一次?

Java 如何使一行代码运行一次?,java,netbeans,Java,Netbeans,当我的表单打开时,它运行一首歌。当我进入选项框并返回主框时,它会重新运行代码。现在我做了一个while循环并运行,但问题是我应该在哪里声明初始值?如果我在windowOpened上声明,它总是重置为0,因此总是再次执行循环 openedWindow事件中的我的代码 int sound = 0; while (sound < 1) { try { InputStream test = getClass().getClassLoader()

当我的表单打开时,它运行一首歌。当我进入选项框并返回主框时,它会重新运行代码。现在我做了一个while循环并运行,但问题是我应该在哪里声明初始值?如果我在
windowOpened
上声明,它总是重置为0,因此总是再次执行循环

openedWindow
事件中的我的代码

int sound = 0;          
while (sound < 1) {
    try 
    {
        InputStream test = getClass().getClassLoader().getResourceAsStream("musics/menu.wav");
        AudioStream Audio = new AudioStream(test);   
        AudioPlayer.player.start(Audio); 
    } 
    catch (Exception e){}

    sound = sound + 1;
}
} 
int-sound=0;
while(声音<1){
尝试
{
InputStream测试=getClass().getClassLoader().getResourceAsStream(“music/menu.wav”);
AudioStream Audio=新的AudioStream(测试);
AudioPlayer.player.start(音频);
} 
捕获(例外e){}
声音=声音+1;
}
} 

InputStream和AudioStream应该是某个对象的实例变量。如果它们驻留在函数
openedWindow
中,则在函数完成运行后,它们将成为垃圾收集器

相反,您应该在需要访问它们的类中实例化它们,可能是在构造函数方法中

另外,使声音变量也成为类的实例变量。这样,它就不会在每次调用
openedWindow
时重置

或者使用布尔标志变量指示是否播放了声音:

class MyWindowListener implements WindowListener {
    boolean soundPlayed = false;
    ...
    public void windowOpened(WindowEvent e) {
        if (!soundPlayed) {
            // play the sound
            soundPlayed = true;
        }
    }
}

不一定,但这与OP的问题无关,所以为什么要将其作为答案发布?声音变量也应该是类的实例变量。我想这会解决他的问题。詹姆斯,while循环是一个无限循环,它会创建新的实例并重新启动音乐,不管你是在里面还是外面实例化它们。@Stultuske while循环只运行一次,所以它毫无意义。while(true)。。。