You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java节奏游戏中LinkedList空判定语句无输出问题如何解决?

问题原因

你的空判定逻辑执行顺序错误,所有空判断都放在了getFirst()调用之后。当LinkedList为空时,方法第一行的beatLinkedList.getFirst()会直接抛出NoSuchElementException,程序中断执行,永远走不到后续的空判定代码。

你补充的现象也符合这个逻辑:当你把判定条件改为beatLinkedList.size() == 1时,链表还有1个元素,getFirst()不会抛出异常,所以可以走到后续的判定逻辑触发打印;而链表size为0时第一行直接报错,自然不会触发空判定的逻辑。

修复方案
  • 进入方法后优先判断链表是否为空,为空时直接处理胜利逻辑并终止方法执行,再进行后续的节拍处理,修改后的参考代码如下:
public void checkBeats(){
    // 优先做空判断,空的时候直接处理胜利逻辑
    if (beatLinkedList.isEmpty()){
        System.out.println("YOU WIN");
        return;
    }
    // 空判断通过后再获取节拍对象,避免抛出异常
    Beat currentObject = (Beat) beatLinkedList.getFirst();
    int currentBeatPosition = currentObject.getX();

    if (currentBeatPosition <= 70) {
        Player.lives -= 1;
        beatLinkedList.removeFirst();
        for (GameObject obj : Handler.object) {
            if (obj instanceof Beat) {
                Handler.object.remove(obj);
                break;
            }
        }
        checkLives();
    }
}

内容的提问来源于stack exchange,提问作者SourOddity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:09:08