Привет, поэтому я пытаюсь использовать этот код для чтения из текстового файла, текстовый файл должен определять шаг, проверяя, будет ли строка следующей строки начинаться с остановки , играть или длительность, а затем передавать его на синтезатор, чтобы он мог играть.java.util.InputMismatchException При загрузке из файла
Кто-нибудь есть идеи, почему он вызывает ошибки и не работает?
код и пример текстового файла следующим образом:
public class MyTuneRunnable implements Runnable {
//method start
public void run(){
Thread thread = Thread.currentThread();
thread.getName();
try {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel[] channels = synth.getChannels();
File file = new File(Loader.instance().getConfigDir().getParentFile().getAbsolutePath()+"/"+"LoadTunes"+"/"+Config.tuneName+".txt");
try {
Scanner intLoader = new Scanner(file);
Scanner stringLoader = new Scanner(file);
while (intLoader.hasNextLine()&stringLoader.hasNextLine()) {
int i = intLoader.nextInt();
String s = stringLoader.next();
if (s.startsWith("play")){
channels[channel].noteOn(i, volume);
}
if (s.startsWith("stop")){
channels[channel].noteOff(i, volume);
}
if (s.startsWith("duration")){
Thread.sleep(i);
}
}
intLoader.close();
stringLoader.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
synth.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
А как текстовый файл выглядит ... это пример:
0 This is a comment
0
play 60 This is a C note and it is set to play because of 'play <note number>'
0
duration 200 This is saying the currently playing notes will make sound
0
stop 60 This stops playing the C note because of the 'stop <note number>'
Если вы получаете исключение и спрашиваете об этом, вам нужно опубликовать весь стек с вашим вопросом. Он содержит важную информацию. Также укажите, какая строка его выбрасывает. –
Почему вы используете два сканера в одном файле? Вероятно, это сбивает вас с толку, поскольку продвижение указателя в одном не продвигает его в другом. –
........... привет? –