Hallo also ich versuche, diesen Code zu verwenden, um aus einer Textdatei zu lesen, soll die Textdatei eine Tonhöhe definieren, indem Sie überprüfen, ob die Zeichenfolge der nächsten Zeile mit jedem Stopp beginnt , play oder duration und übergibt es dann an den Synthesizer, damit es spielen kann.java.util.InputMismatchException Beim Laden von Datei
Hat jemand eine Idee, warum es Fehler verursacht und nicht funktioniert?
Der Code und ein Beispiel Textdatei sind wie folgt:
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();
}
}
}
Was, wie die Textdatei aussieht ... dies ist ein Beispiel:
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>'
Wenn Sie eine Ausnahme erhalten und danach fragen, sollten Sie den gesamten Stacktrace mit Ihrer Frage posten. Es enthält wichtige Informationen. Gib auch an, welche Zeile es wirft. –
Warum verwenden Sie zwei Scanner in derselben Datei? Dies ist wahrscheinlich, was Sie stolpert, da das Vorrücken des Zeigers in einem den anderen nicht voranbringt. –
........... hallo? –