【发布时间】:2015-03-02 14:17:20
【问题描述】:
我正在编写几行代码,它们交替地每 0.5 秒打印出“tick”和“tock”,然后打印出“done!” 60 秒后。
import javax.sound.sampled.*;
public class Thread0001 {
public static void main(String args[]) {
for(int i=0; i<60; i++) {
try {
Thread.sleep(500);
if(i%2 == 0) {
System.out.print("tick ");
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(Thread0001.class.getClass().getResource
("Users/Marshall/Documents/Sources/Elevator.mp3"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch(Exception e) {
}
}
else
System.out.print("tock ");
if(i == 59) { // when it reaches 60 seconds
System.out.println("done!");
}
} catch(Exception e) {
}
}
}
}
好吧,一切似乎都很好,但有一件事 - 我还设置了一个代码,以便在每次“滴答”时发出电梯铃声。这段代码似乎不起作用,有人可以帮我解决这个问题吗?
【问题讨论】:
-
你的jar文件里真的有
Users/Marshall/etc文件夹吗? -
你放了一个try/catch:尝试删除它并粘贴你得到的错误。
-
您正在捕获尝试开始跟踪时可能发生的所有异常。您应该打印出异常,它可能有助于您理解问题。
-
@AntonioRagagnin 我不建议删除 try/catch(可能需要它),而不是建议他使用
e.printStackTrace()发布堆栈跟踪 -
“如何编码播放MP3?”答案在Java Sound info. page。也不要忽略异常。
catch(Exception e) { }应该是catch(Exception e) { e.printStackTrace(); }