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

Java jFugue十二小节蓝调代码运行报this.text为null错误如何解决

问题原因
  • TwelveBarBlues类中定义的成员变量private String pattern从未被赋值初始化,默认值为null。类内部static main方法中定义的Pattern pattern是仅作用于该方法的局部变量,和类成员变量没有关联。
  • 你调用twelveBarBlues.getPattern()返回的是null值,传入Player.play()方法后,方法内部需要操作传入的字符序列,调用length()方法时就触发了空指针异常。
修复方案

将Pattern生成逻辑放到类的构造方法中,初始化成员变量即可,修改后的代码如下:

修复后TwelveBarBlues.java代码

import org.jfugue.pattern.Pattern;
import org.jfugue.theory.ChordProgression;

public class TwelveBarBlues {

    // 成员变量改用Pattern类型,无需额外转String
    private Pattern pattern;

    // 构造方法中初始化蓝调Pattern
    public TwelveBarBlues() {
        this.pattern = new ChordProgression("I IV V")
                .distribute("7%6")
                .allChordsAs("$0 $0 $0 $0 $1 $1 $0 $0 $2 $1 $0 $0")
                .eachChordAs("$0ia100 $1ia80 $2ia80 $3ia80 $4ia100 $3ia80 $2ia80 $1ia80")
                .getPattern()
                .setInstrument("Acoustic_Bass")
                .setTempo(100);
    }

    public Pattern getPattern() {
        return this.pattern;
    }
}

其他说明

原有MusicPlayer类的代码不需要修改,直接运行即可正常播放十二小节蓝调音乐。如果不需要单独运行TwelveBarBlues类,可删除类中原有的static main方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:03