跪求解决,帮忙看个Java程序,有关播放音乐的?我实在不知道哪里出错,但是还急着用,谢谢大家。
- 提问者网友:富士山上尢
- 2021-02-07 23:55
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;
public class SoundPlay extends Applet implements ItemListener,ActionListener{
AudioClip sound;
Choice c=new Choice();//创建列表
Button play=new Button("播放");
Button loop=new Button("循环播放");
Button stop=new Button("停止");
public void init(){
c.add("E:/张靓颖 - 转眼一生转身一世 00_00_00-00_00_17");//添加列表项
c.add("music.wav");
c.add("01.mid");
c.add("02.mid");
add(c);
c.addItemListener(this);//注册监听器
add(play);
add(loop);
add(stop);
play.addActionListener(this);
loop.addActionListener(this);
stop.addActionListener(this);
sound=getAudioClip(getCodeBase(),"music.wav");//设置默认声音
}
public void itemStateChanged(ItemEvent e){
//实现ItemListener对应的抽象方法
sound.stop();//先停止音乐的播放
sound=getAudioClip(getCodeBase(),c.getSelectedItem());//读取用户选项
}
public void actionPerformed(ActionEvent e){
//这一句是实现ActionLstener对应的抽象方法,以后识别用户选择的按钮
if(e.getSource()==play)sound.play();
else if(e.getSource()==loop)sound.loop();
else if(e.getSource()==stop)sound.stop();
}
}
这个程序,为什么播放不了声音?55555555555555555
- 五星知识达人网友:不如潦草
- 2021-02-08 01:16
c.add("music.wav");
c.add("01.mid");
c.add("02.mid");这几个是你是不是都应该写个绝对路径试试啊,例如
e:/music/1.wav
e:/music/2.wav
类似这种的。你的写法第一个明显是个目录,剩下的那几个估计程序都找不到。
- 1楼网友:青灯有味
- 2021-02-08 01:33
噢晕。。 给你个万年历~
package test;
import java.util.scanner;
public class test { private long year; private long month; private long sumday; private long day;
public static void main(string[] args) { test test = new test(); test.setdate(); }
scanner name = new scanner(system.in);
public void setdate() { try { system.out.print("请输入年份:"); year = name.nextlong(); system.out.print("请输入月份:"); month = name.nextint(); // system.out.print("起始年份:"); // year = name.nextlong(); } catch (exception e) { system.out.println("输入错误"); setdate(); } formatoutprint(); }
// 累加天数 public long sumdate() { day = 0; sumday = 0; for (int i = 1; i <= month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if (ifleap(year)) { day = 29; } else { day = 28; } break; default: day = 30; } if (i < month) { sumday += day; } }
// 比如今天是2010年1月1号 是星期五 // 那么在2010 + 28年后的一月一号 也会是星期五 // 所以只要知道我们今年一月一号是星期几,我们就能求出在任意某年以前是星期几 // 存在缺点公元前5740396年 再加上去的话 会出现错误,有待研究 // 还有另外一种算法 2010 一月一号是星期五 // 2010 + 7 也是星期五 2017 + 7 还是星期五 但是在2024 就不是星期五了 就要在2031年一月一号才会是星期五 // 经验 用long能到9100396以上或以下 // 用int 只能到 -5740396 以上 200000年以下 回溯算法 倒退 递归 // 1900 for (long i = -5740396; i < year; i++) { if (ifleap(i)) { sumday += 366; } else { sumday += 365; } }
return sumday; }
// 求用户输入月份的第一天为星期几 2 1 日一二三四五六 public long week() { long week = sumdate() % 7; if (week == 7) { week = 0; } return week; }
// 判断是否闰年 public boolean ifleap(long year) { if (year % 4 == 0 || year % 400 == 0 && year % 100 != 0) { return true; } return false; }
// 格式化输出 public void formatoutprint() { long week = week(); string sumday = long.tostring(sumdate()); system.out.println("距离公元前5740396年1月1日至今总共为:" + sumday + "天"); long d = 0; system.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); for (int i = 0; i < week; i++) { system.out.print(" \t"); } for (int i = 1; i <= day; i++) { system.out.print(" " + i + "\t");
// 星期天需要特殊处理 if (week == 0) { d = i % 7; if (d == 0) { system.out.println(); } } d = week + i % 7; if (d == 7) { system.out.println(); } } }
// // // 星期过滤 // public string weekfilter(long week) { // string outweek = null; // long.tostring(week).t; // switch (week) { // case 0: // return "星期日"; // case 1: // return "星期一"; // case 2: // return "星期二"; // case 3: // return "星期三"; // case 4: // return "星期四"; // case 5: // return "星期五"; // case 6: // } // return "星期六"; // }
// 数字转换 public string numchange(int n) { switch (n) { case 1: return "一"; case 2: return "二"; case 3: return "三"; case 4: return "四"; case 5: return "五"; case 6: return "六"; case 7: return "七"; case 8: return "八"; case 9: return "九"; } return "零"; } }