13,100
社区成员
发帖
与我相关
我的任务
分享
//加了计时器后
//只为满足需求,没重新整理,写得比较乱,我加点注释
import java.util.Random;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMidlet extends MIDlet implements CommandListener, Runnable {
Form f = new Form("人机对话");
Command send = new Command("确定", Command.OK, 1);
Command cls = new Command("清除记录", Command.CANCEL, 1);
Command exit = new Command("退出", Command.EXIT, 1);
TextField tf1 = new TextField("瑞亚", "", 20, TextField.ANY);
Display display = Display.getDisplay(this);
Thread thread;// 计时判断线程
final int TIME = 5000;// 等待用户输入时间,超时提醒 单位毫秒
int time = 0;// 计时器
public MyMidlet() {
// TODO 自动生成构造函数存根
f.append(tf1);
f.addCommand(send);
f.addCommand(exit);
f.addCommand(cls);
f.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
// TODO 自动生成方法存根
}
public void exitApp() {
destroyApp(true);
notifyDestroyed();
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
// TODO 自动生成方法存根
display.setCurrent(f);
if (thread == null) {
thread = new Thread(this);
thread.start();
}
}
private String[] words = { "您的输入不正确", "知道", "是啊,他的画的画很好", "000",
"是的,他是个伟大的哲学家", "说话啊", "请输入", "有什么问题" };// 回答的话
private boolean flagD;// 达芬达标志
private boolean flagY;// 亚里斯多德标志
public void commandAction(Command c, Displayable d) {
// TODO 自动生成方法存根
if (c == send) {
time = 0;// 计时清零
String s = tf1.getString().trim();
if (s.startsWith("000")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[3] + "\n");
tf1.setString("");
// 以"你知道达芬奇吗"开头的问题
} else if (s.startsWith("你知道达芬奇吗")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[1] + "\n");
tf1.setString("");
flagD = true;// 标志这句话问过了
flagY = false;// 把亚里斯多德的标志置否,以免冲突
// 若以"他很有名"开头,且之前最后一次提到达芬奇
} else if (flagD && s.startsWith("他很有名")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[2] + "\n");
tf1.setString("");
// 以"你知道亚里斯多德吗"开头的问题
} else if (s.startsWith("你知道亚里斯多德吗")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[1] + "\n");
tf1.setString("");
flagY = true;// 标志这句话问过了
flagD = false;// 把达芬奇的标志置否,以免冲突
// 若以"他很有名"开头,且之前最后一次提到亚里斯多德
} else if (flagY && s.startsWith("他很有名")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[4] + "\n");
tf1.setString("");
} else {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[0] + "\n");
tf1.setString("");
}
} else if (c == cls) {
f.deleteAll();
f.append(tf1);
} else if (c == exit) {
exitApp();
}
}
public void run() {
// TODO 自动生成方法存根
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
time += 100;
if (time > TIME) {// 时间到,给提示
time = 0;
f.append("苏菲:" + words[random(5, 8)] + "\n");
}
}
}
/**
* 取l-h随机数的方法
*
* @param l
* int
* @param h
* int
* @return int
*/
public int random(int l, int h) {
return (new Random().nextInt() >>> 1) % (h - l) + l;
}
}
//只为满足需求,没重新整理,写得比较乱,我加点注释
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMidlet extends MIDlet implements CommandListener {
Form f = new Form("人机对话");
Command send = new Command("确定", Command.OK, 1);
Command cls = new Command("清除记录", Command.CANCEL, 1);
Command exit = new Command("退出", Command.EXIT, 1);
TextField tf1 = new TextField("瑞亚", "", 20, TextField.ANY);
Display display = Display.getDisplay(this);
public MyMidlet() {
// TODO 自动生成构造函数存根
f.append(tf1);
f.addCommand(send);
f.addCommand(exit);
f.addCommand(cls);
f.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
// TODO 自动生成方法存根
}
public void exitApp() {
destroyApp(true);
notifyDestroyed();
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
// TODO 自动生成方法存根
display.setCurrent(f);
}
private String[] words = { "您的输入不正确", "知道", "是啊,他的画的画很好", "000",
"是的,他是个伟大的哲学家" };// 回答的话
private boolean flagD;// 达芬达标志
private boolean flagY;// 亚里斯多德标志
public void commandAction(Command c, Displayable d) {
// TODO 自动生成方法存根
if (c == send) {
String s = tf1.getString().trim();
if (s.startsWith("000")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[3] + "\n");
tf1.setString("");
// 以"你知道达芬奇吗"开头的问题
} else if (s.startsWith("你知道达芬奇吗")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[1] + "\n");
tf1.setString("");
flagD = true;// 标志这句话问过了
flagY = false;// 把亚里斯多德的标志置否,以免冲突
// 若以"他很有名"开头,且之前最后一次提到达芬奇
} else if (flagD && s.startsWith("他很有名")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[2] + "\n");
tf1.setString("");
// 以"你知道亚里斯多德吗"开头的问题
} else if (s.startsWith("你知道亚里斯多德吗")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[1] + "\n");
tf1.setString("");
flagY = true;// 标志这句话问过了
flagD = false;// 把达芬奇的标志置否,以免冲突
// 若以"他很有名"开头,且之前最后一次提到亚里斯多德
} else if (flagY && s.startsWith("他很有名")) {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[4] + "\n");
tf1.setString("");
} else {
f.append("瑞亚:" + tf1.getString() + "\n");
f.append("苏菲:" + words[0] + "\n");
tf1.setString("");
}
} else if (c == cls) {
f.deleteAll();
f.append(tf1);
} else if (c == exit) {
exitApp();
}
}
}