
正文
cure算法java代码 java 算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
j2se j2ee corejava struts ajax spring 是什么关系?
java分为j2se j2ee j2me
j2se 是java的基础 所有你必须要掌握他
curejava是java核心技术 主要是包括线程、tcp、udp等等知识
这些知识以后项目肯定用到着的 所有必须全部掌握
j2ee 企业级应用 主要是做一些企业级的项目 struts spring hibernate 是j2ee平台下的一些框架
ajax是j2ee下的一种技术 实现异步交互 局部刷新等
j2me:java微型版或java小型平台,用于嵌入式cure算法java代码,如移动电话cure算法java代码,掌上电脑等
才学java的话 先学j2se 而且他至关重要 先走好这一步才能继续走j2ee和j2me
至于学习方法的话 看书 敲代码 勤动手 不懂就问
学到了一定程度 再通过小项目 进行综合实训
这样你才能真正入门,,
相关问答
Q1: 请问这个JAVA程序有错吗?
这个是javascript 是一种基于对象和事件驱动的客户端脚本语言。
先不说程序对错,要写程序要先弄清楚他在做什么,当然从lz的叙述来看,想必对这种语言接触的不多,但就这段程序说,以你的C基础来看并不是很难。
简单的帮你分析下:
var curC=document.getElementById("tab_"+i);
去获取页面上的某个元素,假设这里i是1,那么就是获取页面上id叫tab1的元素,然后赋值给变量curC,js语言规定所有变量都是用var来声明,声明时不固定具体的类型,所以也叫弱类型语言.
curC.style.display="block";
curC这时就代表了id叫tab1的元素,curC.style.display是在设置他的样式里的display属性,该属性是可以设置当前元素显示还是隐藏,设置为"block"就是显示,"none"就是隐藏。
剩下的循环判断就不用多说了吧,然后就是如果触发这个事件了。调用一个js方法我们需要规定在什么样的情况下触发该事件,onmouseover就是当鼠标移动到元素上时触发,所以你这个onmouseover一定是写在某元素内的。调用的格式是:何时触发事件="事件名称"也就是onmouseover="swap_tab()" 这里的括号里面也跟具体的参数了,如果就你给的这段代码来看,n只能代表一个字符,所以他传到该方法内部时没有什么作用,我想作者的本意是要传一个数字吧,依此来控制哪个表格隐藏,哪个表格显示。
根据你给的原始方法写了个小例子,希望对你有帮助.
html
head
title无标题文档/title
script type="text/javascript"
function swap_tab(n){
for(var i=1;i=4;i++){
var curC=document.getElementById("tab_"+i);
var curB=document.getElementById("tab_t"+i);
if(n==i){
curC.style.display="block";
}else{
curC.style.display="none";
}
}
}
/script
/head
body
span onmouseover="swap_tab(1)"显示第一个表格/span span onmouseover="swap_tab(2)"显示第二个表格/span
span onmouseover="swap_tab(3)"显示第三个表格/span span onmouseover="swap_tab(4)"显示第四个表格/span
table
tr
td
table border="5" id="tab_1" style="display:none"
tr
td我是tab_1/td
/tr
/table
/td
td
table border="5" id="tab_t1"
tr
td我是tab_t1/td
/tr
/table
/td
/tr
/table
table
tr
td
table border="5" id="tab_2" style="display:none"
tr
td我是tab_2/td
/tr
/table
/td
td
table border="5" id="tab_t2"
tr
td我是tab_t2/td
/tr
/table
/td
/tr
/table
table
tr
td
table border="5" id="tab_3" style="display:none"
tr
td我是tab_3/td
/tr
/table
/td
td
table border="5" id="tab_t3"
tr
td我是tab_t3/td
/tr
/table
/td
/tr
/table
table
tr
td
table border="5" id="tab_4" style="display:none"
tr
td我是tab_4/td
/tr
/table
/td
td
table border="5" id="tab_t4"
tr
td我是tab_t4/td
/tr
/table
/td
/tr
/table
/body
/html
把他粘到一个文本文件里,然后改名a.html,双击用ie浏览,如果想看代码可以用记事本打开,也可以用dreamweaver来编辑。
Q2: 请问JAVA是怎么运用到网站后台开发的
一、程序运行界面:
1、总控制台
2、计划任务的设置界面。
3、控制台输出结果。
二、程序开发环境:
使用Java(JDK 1.4)开发,图形界面使用Eclipse (2.1.3版)的SWT方式开发。运行主机:P4 2.6+1G内存 windowsXP操作系统
三、预备。
开发此类程序,最好不要直接使用JAVA的线程来编程,这样会增加不必要的复杂度和难度,吃力不讨好。在JAVA中有一个包 java.util.Timer 这个包封装了对线程的操作,我们可以把它称做定时器类。我们先来看一个简单例子:
import java.util.Timer;
import java.util.TimerTask;
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(),seconds*1000); //参数要求转化成毫秒
}
public static void main(String args[]) {
new Reminder(5); //5秒后运行
}
/**一个内部类,封装了所要运行的任务*/
class RemindTask extends TimerTask {
public void run() {
System.out.println("任务运行。。。。");
timer.cancel(); //结束timer中的所有任务
}
}
}
这里涉及于两个JAVA类Timer和TimerTask。我们继承TimerTask类后,将所要运行的任务封装其run方法中;Timer可以管理几千个任务(TimerTask),注意,同一个任务对象不能两次加入到Timer中执行。
对(虽然执行的任务都一样,但是两个任务对象):
timer.schedule(new RemindTask(), seconds * 1000);
timer.schedule(new RemindTask(), seconds * 1000);
错
RemindTask task= new RemindTask();
timer.schedule(task, seconds * 1000);
timer.schedule(task, seconds * 2000);
四、设计方案。
主要的类图
说明:
任务类的设计。我们先创建一个抽象类AbstractTimerTask,这个类直接继承至TimerTask类,提供对TimerTask封装。然后所有具体的任务类(如:TimerTask_1)继承自AbstractTimerTask。
import java.util.TimerTask;
public abstract class AbstractTimerTask extends TimerTask {
TaskEntry taskEntry; //任务记录
public AbstractTimerTask(TaskEntry taskEntry) {
this.taskEntry = taskEntry;
}
/*
* 生成一个新的实例相当于克隆自身;原因在于:同一任务对象不能两次加入到Timer
* 在TaskEntry类将看到它的使用方法
*/
abstract AbstractTimerTask getCloneObject();
}
下面是它的一个实现类的源代码我们可以将要运行任务的代码写在这个类中。
import java.util.Calendar;
public class TimerTask_1 extends AbstractTimerTask {
public TimerTask_1(TaskEntry taskEntry) { //构造方法
super(taskEntry);
}
public AbstractTimerTask getCloneObject() {
return new TimerTask_1(taskEntry);
}
public void run() {
/*在这里写你要执行的程序。。。。。*/
System.out.println("??时:"+taskEntry.getName()+"运行了一次");
this.taskEntry.taskStart(); //运行下一个时间点任务
}
}
在AbstractTimerTask类有一个TaskEntry字段,这是本设计的一个核心类,它代表一条封装完整的任务记录,每个任务类和它的运行计划都封装在这条类中,源代码如下。Timer和AbstractTimerTask前面都已说过,那么TimePlan是做什么用的呢?
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import mytimer.util.Util;
/**任务记录类*/
public class TaskEntry {
public static final int TASK_START = 0; //定义两个表示任务记录状态常量
public static final int TASK_STOP = 1;
private Long oid; //任务ID号,唯一
private String name; //任务名称
private int state = TASK_STOP; //任务状态(启动/停止)
private Timer timer; //JAVA计时器
private TimePlan timePlan; //时间计划的类型
private AbstractTimerTask timerTask; //任务类的种子对象,由这个对象来不断克隆
private AbstractTimerTask runTimerTask; //运行计划的当前任务
/**
* ITaskEntry.taskStart()--TimerTask.run()--ITaskEntry.taskStart()
* 形成一个循环回路。本方法负责起动本类代表的任务
*/
public void taskStart() {
if (timePlan.haveNext()) {
Date date = timePlan.nextDate();//得到任务计划时间
runTimerTask = timerTask.getCloneObject();//得到任务(复制)
timer.schedule(runTimerTask, date); //加入计划队列
//打印将要运行的计划任务的信息
Calendar c = Calendar.getInstance();
c.setTimeInMillis(runTimerTask.scheduledExecutionTime());
System.out.println(Util.dateToLongStr(c.getTime())+"将运行"+name);
} else {
state = TASK_STOP;
System.out.println(name + "结束");
}
}
/**停止任务*/
public void taskStop() {
if (runTimerTask != null) {
//打印信息
Calendar c = Calendar.getInstance();
c.setTimeInMillis(runTimerTask.scheduledExecutionTime());
System.out.println("计划于:"+Util.dateToLongStr(c.getTime())+"运行的" + name + "被终止");
//终止本任务, 调用Timer.cancel()是终止Timer的所有任务。
runTimerTask.cancel();
} else {
System.out.println(name + "未进入执行计划");
}
}
……… 一些属性的get/set方法(省略)
/** 监听类(内部类) */
public static class DateBeforeTodayException extends NullPointerException {
private Date date;
public DateBeforeTodayException(Date date) {this.date = date;}
public String toString() {
return "计划时间(" + Util.dateToLongStr(date) + ")早于当前时间";
}
}
}
1、TimePlan是一个接口(interface),它是表示“运行计划的方案”,这个程序中提供了三种运行计划方案(见前图:计划任务的设置界面):
一次性运行。
每隔一个时间段运行。
一周中选择那几天运行。
将它设计成一个接口是为了方便今后扩展,如果要新增新的时间方案只需要继承这个接口写一个新的实现即可。三种时间方案的类图如下:
说明:
a) TimePlan封装了五个方法,其它haveNext()和nextDate()最重要,这个两个方法模仿了Java中集合类(Collection)的迭代器(Iterator)的设计形式,代码如下:
import java.util.Date;
//时间计划方案的接口
public interface TimePlan {
boolean haveNext();//判断还有没有下一个计划时间
Date nextDate();//得到下一个计划时间
Date getCurrentDate();//得到开始时间
void setCurrentDate(Date date); //设计开始时间
String getTimePlanString();//显示运行计划方案的文字说明
}
b) AbstractTimePlan是这个抽象类,主要目的是将一些各子类的公共方法写在这里。代码如下:
import java.util.Date;
public abstract class AbstractTimePlan implements TimePlan {
//记录计划的第一时间点,除设置新的起始时间,否则不再改变
protected Date currentDate;
/*
当前计划的时间点,每次计划替换时被更新,
似乎这个才应叫cureentDate,sorry不想再改了
*/
protected Date planDate;
public boolean haveNext() {
return (planDate != null);
}
public Date getCurrentDate() {
return currentDate;
}
public void setCurrentDate(Date date) {
currentDate = date;
planDate = date; //在赋给currentDate值时,同时也赋给planDate
}
}
c) 然后我们看看三种计划方案的实现类的源代码:
//“一次性运行”的计划方案类
import java.util.Date;
public class TimePlanOnce extends AbstractTimePlan {
public Date nextDate() {
//把要当前的计划时间保存在中间变量中
Date returnDate = this.planDate;
//算出下一个计划时间。没有下一个就设为null
this.planDate = null;
//判断一下计划时间合不合条件
if (returnDate == null)
throw new NullPointerException("没有下一个计划日期");
return returnDate;
}
public String getTimePlanString() {
return "一次性运行,运行时间: (打印this.currentDate) ";
}
}
//“周期性间隔”的时间计划方案类
import java.util.Date;
public class TimePlanPeriod extends AbstractTimePlan {
public static final int HOUR = 0;
public static final int DAY = 1;
private int spaceTime; //间隔时间,单位毫秒
private int timeType;
public Date nextDate() {
//把要当前的计划时间保存在中间变量中
Date returnDate = this.planDate;
//算出下一个计划时间。没有下一个就设为null
int milliSecond = 0;
if (timeType ==HOUR) milliSecond = spaceTime * 1000; //小时*60*60*1000;
if (timeType ==DAY) milliSecond = spaceTime * 24 * 60 * 60 * 1000; //天
planDate = Util.DateAddSpaceMilliSecond(planDate, milliSecond);
//判断一下计划时间合不合条件
if (returnDate == null)
throw new NullPointerException("没有下一个计划日期");
return returnDate;
}
public String getTimePlanString() {
if (timeType == HOUR)
return "第一次运行于:currentDate.并每隔spaceTime小时运行一次";
if (timeType == DAY)
return "第一次运行于:currentDate.并每隔spaceTime天运行一次";
return "";
}
public int getSpaceTime() { return spaceTime; }
public int getTimeType() { return timeType; }
public void setSpaceTime(int i) { spaceTime = i; }
public void setTimeType(int i) { timeType = i; }
}
/**选择一周的某几天,让这几天在同一时间点运行任务, 一周内必须选择一天*/
import java.util.Calendar;
import java.util.Date;
public class TimePlanSelectWeek extends AbstractTimePlan {
private static Calendar c = Calendar.getInstance(); //取得一个日历实例
private static int spaceMilliSecond = 0; //间隔时间,单位毫秒
private boolean[] selectWeek = new boolean[7]; //0为星期日 ,1为星期一
public Date nextDate() {
Date returnDate = null;
if (!isSelectWeek(planDate)) //如果这一天不是所选周中的一天
planDate = getNextDate(planDate);
returnDate = planDate;
planDate = getNextDate(planDate);
//判断一下计划时间合不合条件
if (returnDate == null)
throw new NullPointerException("没有下一个计划日期");
return returnDate;
}
//算出下一个计划时间。没有下一个就设为null
private Date getNextDate(Date date) {
Date tempDate = date;
Date returnDate = null;
for (int i = 0; i 7; i++) {
tempDate = Util.DateAddSpaceMilliSecond(tempDate, spaceMilliSecond);
if (isSelectWeek(tempDate)) {
returnDate = tempDate;
break;
}
}
return returnDate;
}
/**设置某星期是否被选, 0为星期日 ,1为星期一....6为星期六*/
public void setSelectWeek(int i, boolean b) {selectWeek[i] = b;}
/** 判断某星期是否被选*/
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);
}
Q3: 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;
//当前exp if(opCnt0) { //生成下级表达式 for(int i=0; i4; ++i) GenerateExpression(opCnt-1, preExp + ops[i]); } else //opCnt=0 { //计算表达式的值,如果为0则输出 if(Eval(preExp) == 0) coutpreExp"=0"endl; }} //计算表达式的值,一般来说需要写一个表达式翻译器,但是考虑到题目特殊,可以优化//1、操作数只有1,所以就不用分析操作数了//2、运算符只有+-*/所以就不用考虑括号问题,只需要考虑四则运算优先级//3、考虑*/的操作数,有两个来源,一个是1,一个是其他*/操作数的结果,//用归纳法可以容易的知道,*/的结果一定是1,所以原则上表达式中*1和/1//对结果没有任何影响(我爱阿贝尔群!)//4、由于3、证明了*/对结果没有影响,所以就不用考虑运算优先级问题了,哦也!int Eval(string curExp){ int result = 0; if(curExp.length()==0 || curExp.length()%2==0) throw new exception("Wrong exception format.");
//空表达式,偶数字符表达式都是非法的 if(curExp[0]=='1') result = 1; else new exception("Wrong exception format.");
//表达式不是1()1()1...格式的 for(int i=1; i(int)curExp.length(); i+=2) { string curOp = curExp.substr(i,2); if(curOp == "+1") result++;
//+1 else if(curOp == "-1" ) result--;
//-1 //*1和/1对表达式结果没有影响 } return result;} int main(){ //寻找1()1()1=0的表达式并输出 GenerateExpression(2,"1"); system("PAUSE"); return 0;}
Q4: 有哪位好心人有cad二次开发的实例,用vb货c语言编的都可以,不用太复杂简单点的就可以,希望好心人能帮忙
觉得还是应该写写CAD二次开发的相关一些内容,原因是最近搜网上对于这种实例原理分享的内容忒少了,毫无头绪,因此进行一个简单的分享,希望和我一样的寻求如何对CAD进行二次开发的,亦或是不知道怎么做的,可以参考一下一些拙见。
最近由于公司业务逐渐的增多,而同事与cad相关的工作,有不少是重复性工作,而软件往往就是为了减少重复性的工作,增加创新性的工作,提高工作效率,减少差错率等~~说这么一句话,在CAD基础上开发插件,解决这些问题。。。只好硬着头皮上了
个人是选择C#进行CAD的二次开发,原因使用起来相对来说容易上手,首先C#是高级语言,面向对象,本身自己从Java出身;C#还有一个优势,就是依然可以调用C++库,可以很好的托管一些现有的功能,由于自己在C#和cad的使用完全是菜鸟,因此在网上找了两本现有可以找到的书《NET_CAD深居浅出AutoCAD二次开发 C#版》
和《深入浅出cad二次开发》,废话不说了,下面说一下代码实现倒圆角的原理,由于涉及到软件著作权,就不贴代码了
首先倒圆角从命令的使用时,选中命令,然后选择两条线,在给定的半径下进行画圆弧。介于以上的命令使用方式,因此开始考虑使用C#所支持sendstringtoexecute来调用fillet命令,如
sendstringtoexecute("._fillet \n r\n 0.7\n");
当写到这个命令时间,必须要指定两条线才能回画出,然后进行了仿照Lisp语言的ObjectID的获取,Handle的获取,HighLight的设置调用,均无效~~彻底失望,想了一年愣是没想出来怎么才能成功的调用语言,也可能是由于自己对于二次开发的经常不足吧,可能还不熟悉正确的调用方法。
因此进行了转换角度思考,C#既然进行arx等类库的封装,那么可以理解,一些基本的常用的功能都会实现,不用进行托管c++,并且如果调用命令的话,往往比较难以控制,因此就用数学算法的形式进行代码的开发。。。
两条线 l1和l2 可以获取两线的交点p,需要画的倒圆角的半径已知r,根据CAD的方法,Point3d中可以算出此两条线的夹角,因此可以使用数学函数sin,可以求出p点和圆心点的距离,进而根据Cure中的方法可以算出圆弧的圆心o,因此可以按照圆心o和半径r做圆,这样就会和l1、l2进行相切,这时间按照同样的思路可以获得两个切点,然后根据point2d的方法,获取切点和原型o的的角度,这样就可以获得起始角度和终点角度,加上o和半径r,这样就可以画圆弧了,最后这个圆弧就是倒圆角。
这么一说是不是觉得简单了呢~~
关于cure算法java代码和java 算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







