@Sarah
2015-11-05T17:55:23.000000Z
字数 4771
阅读 1416
java笔记
上次课的作业
package reminder;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class ReminderTest {BufferedReader kbr;public ReminderTest() {this.kbr = new BufferedReader(new InputStreamReader(System.in));}// 读取文件到array listpublic List txtToList() {List<String> todoList = new ArrayList<String>();try {FileReader fr = new FileReader("日程.txt");BufferedReader br = new BufferedReader(fr);while (true) {String s = br.readLine();if (s == null)break;todoList.add(s);}} catch (Exception e) {e.printStackTrace();}return todoList;}// 写数组到txtpublic void listToTxt(List<String> todoList) {try {File f = new File("日程.txt");BufferedWriter bw = new BufferedWriter(new FileWriter(f));for (int i = 0; i < todoList.size(); i++) {bw.write(todoList.get(i) + "\n");}bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 查看public void check() {List<String> todoList = txtToList();for (String s : todoList) {String ss[] = s.split(";");System.out.println("name:" + ss[0]);System.out.println("address:" + ss[1]);System.out.println("date:" + ss[2]);System.out.println("time:" + ss[3]);if (ss.length > 4)System.out.println("alarm:" + ss[4]);System.out.println("-----------------------------------");}}//下面部分还需要更改public String inputTodo(){StringBuffer todo = new StringBuffer();String s = null;try {System.out.print("name:");s = kbr.readLine();todo.append(s).append(";");System.out.print("address:");s = kbr.readLine();todo.append(s).append(";");System.out.print("date(yyyy-mm-dd):");s = kbr.readLine();todo.append(s).append(";");System.out.print("time(hh:mm):");s = kbr.readLine();todo.append(s);System.out.print("need alarm?(y/n)");s = kbr.readLine();if (s.equals("y") || s.equalsIgnoreCase("Y")) {System.out.print("alarm time:");s = kbr.readLine();todo.append(";").append(s);}} catch (IOException e) {e.printStackTrace();}return todo.toString();}// 录入public void input() {List<String> todoList = txtToList();todoList.add(inputTodo());listToTxt(todoList);}// 删除 【此次更新部分】public void delete() {System.out.println("plese input the name to delete:");List<String> todoList = txtToList();String j = ""; //初始化,和null差不多try {j = kbr.readLine(); // 用stringbuffer读jfor(String s:todoList){//遍历todolist里的每一个字符 高级for循环if(s.startsWith(j)){todoList.remove(s);System.out.println("done.");break;}};listToTxt(todoList);} catch (IOException e) {e.printStackTrace();}}// 修改 【此次更新部分】public void change() {int k = 0;List<String> todoList = txtToList();String x = null;try {System.out.println("input the name to change...");x = kbr.readLine();for(String s:todoList){//高级for用法if(s.startsWith(x)){todoList.remove(s);//删除写进去的,再重新写。todoList.add(inputTodo());System.out.println("done.");break;}};} catch (IOException e) {e.printStackTrace();}listToTxt(todoList);}//输入的时候已经设置闹钟了,所以不用再设置了。public static void main(String[] args) {ReminderTest rm = new ReminderTest();new AlarmThread(rm).start();rm.go();}void go() {while (true) {System.out.println("1:check todo list");System.out.println("2:input new todo");System.out.println("3:delete todo list");System.out.println("4:change todo list");System.out.print("0:exit>>>>");String s = null;try {s = kbr.readLine();} catch (IOException e) {e.printStackTrace();}if (s.equals("1")) {check();} else if (s.equals("2")) {input();} else if (s.equals("3")) {delete();} else if (s.equals("4")) {change();} else if (s.equals("5")) {alarm();} else if (s.equals("0")) {System.exit(0);}}}}
//闹钟线程(和上次一样无修改)package reminder;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import javax.sound.midi.MidiSystem;import javax.sound.midi.Receiver;import javax.sound.midi.Sequence;import javax.sound.midi.Sequencer;import javax.sound.midi.Synthesizer;import javax.sound.midi.Transmitter;public class AlarmThread extends Thread {ReminderTest rm;public AlarmThread(ReminderTest rm) {this.rm = rm;}public void run() {try {File file = new File("onestop.mid"); // This is the file we'll be// playingMidiSystem.getMidiFileFormat(file);Sequencer sequencer = MidiSystem.getSequencer(); // Used to play// sequencessequencer.open(); // Turn it on.Synthesizer synth = MidiSystem.getSynthesizer();synth.open(); // acquire whatever resources it needsTransmitter transmitter = sequencer.getTransmitter();Receiver receiver = synth.getReceiver();transmitter.setReceiver(receiver);Sequence sequence = MidiSystem.getSequence(file);sequencer.setSequence(sequence);while (true) {System.out.println("alarm thread is running...");List<String> todoList = rm.txtToList();for (String s : todoList) {String ss[] = s.split(";");if (ss.length > 4) {SimpleDateFormat sdt = new SimpleDateFormat("HH:mm");SimpleDateFormat sdd = new SimpleDateFormat("yyyy-MM-dd");String sdDate=sdd.format(new Date());String sdtime = sdt.format(new Date());// System.out.println(sdtime);if (ss[4].startsWith(sdtime) && ss[2].equals(sdDate))sequencer.start();}}Thread.sleep(60000);}} catch (Exception e) {e.printStackTrace();}}}