[英]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.