我如何正确使用布尔值来使用方法的不同部分

时间:2018-12-28 22:14:38

标签: java

我有一个MP3Player类,它具有方法pressStop。我想检查是否在重置播放列表之前使用了该方法,以及是否只是暂停歌曲。我尝试过在不同的部分使用它们,但无济于事。我将不胜感激 代码:

public void pressStop() {
        boolean isStopped = false;
        if(isStopped) {
            currentSong = 0;
            System.out.println("Songs are stopped");

        }
        if(!isStopped){
            System.out.println("Song " + currentSong + " is stopped");
            isStopped = true;
        }
    }

2 个答案:

答案 0 :(得分:0)

此代码将不起作用。

isStopped始终为假,因此永远不会输入第一个条件


处理这些操作的一种方法是使用回调侦听器,就像任何流行的GUI框架都会提供按钮单击一样。

这里的想法-您拥有一个维护玩家“状态”的类,并且从该类外部注入了对该状态进行操作的所有事件。

public class MP3Player {

    private boolean playing; // defaults to false
    private MP3Player.StopButtonListener stopListener;

    public MP3Listener(StopButtonListener stopListener) {
        this.stopListener = stopListener;
        // TODO: Add listeners for other buttons, like start/next/prev
    }

    public interface StopButtonListener {
        public void onStopClicked();
    }

    public void stop() {
        System.out.println("stopping player!");
        this.playing = false;
        if (this.stopListener != null) {
            this.stopListener.onStopClicked();
        }
    }

    // TODO: add start

}

这样,您可以在mp3播放器停止时添加操作。

public class MP3Demo {

    public static void main(String[] args) {

        MP3Player.StopButtonListener l = new MP3Player.StopButtonListener() {
            @Override
            public void onStopClicked() {
                System.out.println("got stop event for player!");
                // TODO: Reset the player, update some other information in your app, etc.
            }
        };
        final MP3Player p = new MP3Player(l);
        p.stop();
    }

}

答案 1 :(得分:0)

您要在方法开始时设置.o变量。它始终是isStopped

您可以尝试:

false