import org.jfugue.player.Player;
public class MusicPlayer {
public static void main(String[] args) {
TwelveBarBlues twelveBarBlues = new TwelveBarBlues();
System.out.println("Twelve Bar blues Playing: ");
Player player = new Player();
player.play(twelveBarBlues.getPattern());
}
}
import java.io.IOException;
import org.jfugue.pattern.Pattern;
import org.jfugue.player.Player;
import org.jfugue.theory.ChordProgression;
public class TwelveBarBlues {
private String pattern;
public static void main(String[] args) throws IOException {
Pattern 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);
new Player().play(pattern);
}
public String getPattern() {
this.pattern = pattern;
return pattern;
}
}我想在MusicPlayer上播放twelveBarBlue音乐代码。但我得到错误代码无法调用"java.lang.CharSequence.length()“,因为在我运行MusicPlayer MusicPlayer Error Code时,"this.text”为null
发布于 2021-10-21 16:55:31
当你执行MusicPlayer时,它调用MusicPlayer中的main(),但是TwelveBarBlues中的main()从未被调用过,所以在getPattern()中,'pattern‘从未被设置过,你返回的是null。
相反,请更改TwelveBarBlues,以便getPattern()返回main()中当前具有的模式。只需将代码从main()移到getPattern()中,然后删除main()方法,因为您没有将TwelveBarBlues作为自己的程序运行。
或者,保留main()方法,以防您希望将该类用作自己的可执行文件,但让它调用自己的getPattern()方法。您需要执行类似TwelveBarBlues blues = new TwelveBarBlues();的操作,然后执行new Player().play(blues.getPattern());。
https://stackoverflow.com/questions/69649977
复制相似问题