cure算法java代码 java 算法( 五 )


/** 判断某星期是否被选*/
public boolean isSelectWeek(int i) {return selectWeek[i];}
/**判断某天所属星期几是否被选*/
public boolean isSelectWeek(Date date) {
if (date == null) return false;
c.setTime(date);
//Calendar.DAY_OF_WEEK:星期日=1,星期六=7 c.get(Calendar.DAY_OF_WEEK)
return isSelectWeek(c.get(Calendar.DAY_OF_WEEK) - 1);
}
public String getTimePlanString() {
StringBuffer sb = new StringBuffer("");
if (selectWeek[1]) sb.append("周一,");
if (selectWeek[2]) sb.append("周二,");
if (selectWeek[3]) sb.append("周三,");
if (selectWeek[4]) sb.append("周四,");
if (selectWeek[5]) sb.append("周五,");
if (selectWeek[6]) sb.append("周六,");
if (selectWeek[0]) sb.append("周日,");
return "每周的"+sb.toString()+"运行";
}
}
TimerTask的工厂类 。将生成TimerTask的代码另起一个类的好处是代码的层次比较清楚,也比较好管理 。由于TimerTask包含有几个字段,因此产生一个TimerTask对象还是有一定的复杂度,建立一个专门生成TimerTask的工厂类,这样我们在生成一个TimerTask对象时就可以少掉很多麻烦的代码了 。当然由于我的工作任务 , 只需要一个TimerTask对象就够了 , 所以最初之前我是将它直接写在图形界面的代码里的 。
这里建立一个TimerTask对象池tasks,它是一个静态变量,这样在getInstance时不必总是要新生成一个TimerTask 。还有Timer也是一个静态变量 , 它是一个全局单例(是最简单的单例模式了) , 因为前面说了Timer可以管理几千个任务,所以Timer对象一个就够了 。
import java.util.HashMap;
import java.util.Timer;
public class TaskEntryFactory {
private static final HashMap tasks = new HashMap();
private static final Timer timer = new Timer();
public static TaskEntry getInstance(Long oid, String name) {
if (tasks.containsKey(oid)) {
return (TaskEntry) tasks.get(oid);
} else {
TaskEntry entry = new TaskEntry();
entry.setOid(oid);
entry.setName(name);
entry.setTimer(timer);
entry.setTimerTask(new TimerTask_1(entry));
tasks.put(oid, entry);
return entry;
}
}
}
起动和停止任务,当“任务设置界面(TaskListDialog.java)”点击OK后处理 。界面的编写就不在本文讨论的范围内了 。
//任务设置界面中点击”确认(OK)”按钮后的处理
if (dialog.open() == Window.OK) {
if (taskEntry.getState() == TaskEntry.TASK_START) {
taskEntry.taskStop();//将旧的停掉
taskEntry.taskStart();//开始新设置的
}
if (taskEntry.getState() == TaskEntry.TASK_STOP)
taskEntry.taskStop();
tv.refresh(taskEntry);
}
C++问题:1()1()1=0,圆括号中为+-*/运算符,编程求出所有可能的等式 。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374//*******************************//Answer for ;push=keywordentry=uhome_newoldq=1//C++问题:1()1()1=0 , 圆括号中为+-*/运算符,编程求出所有可能的等式 。//Author: swordlance//Date: 2014-04-08 (Fxxk M$ for stop supporting WindowsXP)//*******************************#includeiostream#includestdlib.h#includestring using namespace std; //四种操作符string ops[] = {"+1", "-1", "*1", "/1"};//Eval的定义int Eval(string curExp); //分解为两个子问题//1---生成所有1()1()1的表达式,字符串//2---计算所有表达式的值 , 把为0的输出 。//生成1()1()1()1....型表达式(递归)//在最后一层完成求值和输出,求值使用Eval函数//opCnt为操作符个数:1()1()1的情况就为2//preExp上层生成的表达式void GenerateExpression(int opCnt, string preExp){string curExp;

推荐阅读