繁体   English   中英

Java方法正在跳过return语句

[英]Java Method is skipping return statement

此java方法正在跳过return语句。 我想知道是否有人遇到过这种情况并且知道解决方案。 无论错误是什么,它都非常微妙。

public GameState getNextGameState() {
    if (player.getLives() > 0) {
        if (!player.isAlive()) {
            System.out.println("checkpoint 1");
            player.setIsAlive(true);
            return new PlayField(width, height, hiScores, player.setCoordinates(width / 2, height - 8),
                    stagePattern, stage);
        }
        System.out.println("checkpoint 2");
        if(++stage > 29)
            stage = 0;

        return new PlayField(width, height, hiScores, player.setCoordinates(width / 2, height - 8), stage);
    }
    return new GameOver(Game.key, hiScores, player.getRank());
}

这是带有控制台输出的屏幕截图,以证明这一点: 在此处输入图片说明

另外,仅当我将游戏状态放入堆栈结构时,此错误才开始发生。 这是我现在用于游戏状态转换的代码:

public void update() {

    gsm.peek().update();

    if(gsm.peek().finished)
        if(gsm.peek().getNextGameState() == null)
            gsm.pop();
        else
            gsm.push(gsm.pop().getNextGameState());             
}

gsm声明是:

public static Stack<GameState> gsm = new Stack<GameState>();

希望有人有一些见识。 谢谢!

这不是相同调用的结果。
您在这里调用两次该方法。
第一次不活着,第二次还活着。 因此,您在输出中都有这两个消息。
在游戏中,以连续方式调用更新阶段。
只需在方法的开头(在条件之前)添加System.out.println ,便可以确认:

public GameState getNextGameState() {

     System.out.println("enter method");
     ...
}

您可以发布更多代码吗? 您可能会两次调用它,并且不会跳过返回值。 如果您真的认为这是一个断点,可以帮助您进行调试并观看代码运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM