仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3923|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之一个复杂的表达式求值类,java

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:44:57 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。importjava.util.Date;
publicclasstestcalc2
{
Stringa;
intlen_of_str;
interr;//err用于发明哪一个字符是堕落字符就是第一个堕落字符串的下标,初始值为-1,暗示无错
intindex;

publictestcalc2(Stringstr)
{
a=str+"+";
len_of_str=a.length();
err=-1;
index=0;
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%"+a+len_of_str);

}

publicdoublegetnextnum()
{
intpreindex=index,countofdot=0;
if(a.charAt(index)==-)
index++;
if(!Character.isDigit(a.charAt(index)))
{
err=index;
return0;
}
while((index<len_of_str)&&
(Character.isDigit(a.charAt(index))||a.charAt(index)==.))
{
if(a.charAt(index)==.)
{
countofdot++;
}
index++;
if(countofdot==2)
{
err=index;

return0;
}
}
returnDouble.valueOf(a.substring(preindex,index)).doubleValue();
}
publicchargetnextop()
{
charch=a.charAt(index);
if((ch!=+)&&(ch!=-)&&(ch!=*)&&(ch!=/))
{
err=index;
ch=;
returnch;
}
index++;
returnch;

}
publicdoublecalcuvalue()
{
longstart=System.currentTimeMillis();
Dated=newDate();
longnow=d.getTime(),dif;
charch;
booleanminusflag=false,multiflag=false,dividflag=false;
doubletotal=0,next=0,num=0;//nextusedtobe*or/
while(index<len_of_str)
{
num=getnextnum();
if(err!=-1)
{
System.out.println("err!?!trytogetnextnumbut"+
"thecharatindex"+err+"iswrong");
return0;
}
System.out.println("indexafter"+index);

ch=getnextop();
if(err!=-1)
{
System.out.println("err!?!trytogetnextopbut"+
"thecharatindex"+err+"iswrong");
return0;
}
System.out.println("indexafter"+index);

switch(ch)
{
case+:

if(multiflag)
{
next=next*num;
}
elseif(dividflag)
{
next=next/num;
}
else
{
next=num;
}
if(minusflag)
{
next=-next;
}
total=total+next;
minusflag=false;
multiflag=false;
dividflag=false;
break;
case-:
if(multiflag)
{
next=next*num;
}
elseif(dividflag)
{
next=next/num;
}
else
{
next=num;
}
if(minusflag)
{
next=-next;
}
total=total+next;
minusflag=true;
multiflag=false;
dividflag=false;
break;
case*:
if(multiflag)
{
next=next*num;
}
elseif(dividflag)
{
next=next/num;
}
else
{
next=num;
}
multiflag=true;
dividflag=false;
break;

case/:
if(multiflag)
{
next=next*num;
}
elseif(dividflag)
{
next=next/num;
}
else
{
next=num;
}
dividflag=true;
multiflag=false;
break;
default://impossible,alreadyhaserr
}
System.out.println("ch"+ch+"num"+num+"total"+total+
"next"+next+"-"+minusflag+"*"+
multiflag+"/"+dividflag);
}//while

returntotal;

}



你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 11:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表