@Sarah
2015-11-05T17:55:23.000000Z
字数 4771
阅读 1340
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 list
public 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;
}
// 写数组到txt
public 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 block
e.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读j
for(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
// playing
MidiSystem.getMidiFileFormat(file);
Sequencer sequencer = MidiSystem.getSequencer(); // Used to play
// sequences
sequencer.open(); // Turn it on.
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open(); // acquire whatever resources it needs
Transmitter 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();
}
}
}