System.out.print(lis.get(i)+"");
}
}
}
5、输出金额的中文大写形式
//还有一些不是很理想的地方
publicclassChange{
publicStringchange(Stringm){
StringBufferre=newStringBuffer("");
inti=0;
intj=0;
i=m.lastIndexOf(".");
if(i==-1)i=m.length();
Stringb=m.substring(0,i);
char[]c=b.toCharArray();
StringBuffers=null;
for(i=c.length-1,j=0;i>=0;i--,j++){
s=newStringBuffer("");
if(i!
=c.length-1&&c[i+1]!
='0')
s.append(changeNum(c[i]));
if(c[i]!
='0'){
switch(j%4){
case1:
s.append("拾");break;
case2:
s.append("佰");break;
case3:
s.append("仟");break;
default:
break;
}
}
if(j!
=0&&j%8==0)
s.append("亿");
elseif(j!
=0&&j%4==0){
s.append("万");
}
re=s.append(re);
}
re.append("圆");
i=m.lastIndexOf(".");
Stringd=null;
if(i!
=-1){
d=m.substring(i+1,m.length());
char[]e=d.toCharArray();
if(e.length==1)
if(e[0]!
='0')
re.append("零").append(changeNum(e[0])).append("角").toString();
if(e.length==2)
if(e[0]!
='0'||e[1]!
='0')
re.append("零");
if(e[0]!
='0')
re.append(changeNum(e[0])).append("角").toString();
if(e[1]!
='0')
re.append(changeNum(e[1])).append("分").toString();
}
returnre.toString();
}
publicStringchangeNum(charc){
String[]n={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
returnn[c-'0'];
}
publicstaticvoidmain(String[]args){
Changec=newChange();
System.out.println(c.change(".78"));
}
}
6、实现一个复数类
importjava.io.*;
classcomplex{
//复数类
publicfloatrealPart;
publicfloatimagPart;
}
publicclassMainextendscomplex{
publicstaticStringreadString(){
//从键盘读取字符串
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in),1);
Strings1="";
try{
s1=br.readLine();
}catch(IOExceptionex){
System.out.println(ex);
}
returns1;
}
publicstaticfloatreadFloat(){
//字符串转换为浮点数
returnFloat.parseFloat(readString());
}
publicstaticcharplus(floatr1,floatr2,floati1,floati2){
//实现复数相加并输出
complexsum=newcomplex();
sum.imagPart=i1+i2;
sum.realPart=r1+r2;
if(sum.imagPart<0){
//解决虚部为负时同时显示+-号问题
sum.imagPart=-sum.imagPart;
System.out.println("两数相加="+sum.realPart+"-"+sum.imagPart+"i");
return'f';
}
System.out.println("两数相加="+sum.realPart+"+"+sum.imagPart+"i");
return'z';
}
publicstaticcharminus(floatr1,floatr2,floati1,floati2){
//实现复数相减并输出
complexcha=newcomplex();
cha.imagPart=i1-i2;
cha.realPart=r1-r2;
if(cha.imagPart<0){
//解决虚部为负时同时显示+-号问题
cha.imagPart=-cha.imagPart;
System.out.println("两数相减="+cha.realPart+"-"+cha.imagPart+"i");
return'f';
}
System.out.println("两数相减="+cha.realPart+"+"+cha.imagPart+"i");
return'z';
}
publicstaticvoidmain(String[]args){
//主方法
complexa=newcomplex();
complexb=newcomplex();
System.out.println("输入第一个复数...");
System.out.print("\n实部=");
a.realPart=Main.readFloat();
System.out.print("虚部=");
a.imagPart=Main.readFloat();
System.out.println("\n输入第二个复数...");
System.out.print("\n实部=");
b.realPart=Main.readFloat();
System.out.print("虚部=");
b.imagPart=Main.readFloat();
System.out.println("\n");
Main.plus(a.realPart,b.realPart,a.imagPart,b.imagPart);
Main.minus(a.realPart,b.realPart,a.imagPart,b.imagPart);
}
}
以前做的可以实现复数加减法。
因为浮点数精度问题,输出可能会有点误差
7.实现一个银行账户类
publicclassBankAccount{
Stringaccount;
intaccount_num;
//构造函数
publicBankAccount(Stringaccount,intaccount_num){
this.account=account;
this.account_num=account_num;
}
//存钱
publicStringaddNum(intnum){
account_num=account_num+num;
return"存钱成功";
}
//取钱
publicStringgetNum(intnum){
Stringresult;
if(account_num>num){
account_num=account_num-num;
result="取钱成功";
}else{
result="账户余额不足,还剩"+account_num;
}
returnresult;
}
//显示余额
publicStringdisplayNum(){
return"账户余额:
"+account_num;
}
//显示账号
publicStringdisplayAccount(){
return"账户:
"+account;
}
publicstaticvoidmain(String[]args){
BankAccountlucy=newBankAccount("lucy",100);
BankAccountjack=newBankAccount("jack",50);
//显示他们各自的余额
System.out.println("===显示他们各自的余额===");
System.out.println("lucy:
"+lucy.displayNum());
System.out.println("jack:
"+jack.displayNum());
//存钱取钱
System.out.println("===存钱取钱===");
System.out.println("lucy取50:
"+lucy.getNum(50));
System.out.println("jack存200:
"+jack.addNum(200));
//显示账户显示余额
System.out.println("===存钱取钱===");
System.out.println(lucy.displayAccount()+""+lucy.displayNum());
System.out.println(jack.displayAccount()+""+jack.displayNum());
}
}
运行结果:
===显示他们各自的余额===
lucy:
账户余额:
100
jack:
账户余额:
50
===存钱取钱===
lucy取50:
取钱成功
jack存200:
存钱成功
===存钱取钱===
账户:
lucy账户余额:
50
账户:
jack账户余额:
250
8、编写程序实现判断及识别标识符的功能
importjava.io.FileReader;
//importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.FileOutputStream;
importjava.io.OutputStreamWriter;
classTools{
publicfinalintmaxsize=200;
Stringsavwd[]={"main","int","float","char","double","long","return","if","case","switch","break","default","printf","scanf","define","include"};//保留字数组;
charoperate[]={'=','>','<','?
','!
','+','-','*','/','%','(',')',':
'};//操作符数组
charseprate[]={',',';','{','}','"'};//分隔符数组
Stringdoperate[]={"==","+=","-=",">=","<=","!
=","=","+","-","<",">","!
","*","/","%","(",")","++","--","()"};
}
classMonitor{
publicintflag;
publicStringstring;
}
publicclasstest{
staticMonitoranalyste(chararray[]){//对读取的窜进行分析
Toolsget=newTools();
Monitormonitor=newMonitor();
intflag=0,numbercount=0;
intcountnumber;
for(countnumber=0;array[countnumber]!
='\0';countnumber++);
Stringstr=newString(array);
str=str.substring(0,countnumber);
for(intcount=0;countif(str.equals(get.savwd[count]))
{
flag=1;
break;
}
if(flag==1){//是否为关键字
monitor.flag=1;
}
elseif(array[0]>='0'&&array[0]<='9'){//判断是否为常量
numbercount=1;
for(intcount=numbercount;countif(array[count]>='0'&&array[count]<='9')
numbercount++;
if(numbercountmonitor.flag=2;
}
elseif(numbercount==str.length()){//判断是否是常量
monitor.flag=3;
}
}
elseif((array[0]>='a'&&array[0]<='z')||(array[0]>='A'&&array[0]<='Z')){//判断是否是表示符
monitor.flag=4;
}
monitor.string=str;
returnmonitor;
}
staticbooleaniseprate(charo)//判断是否是分割符
{
Toolsget=newTools();
intflag=0;
for(intcount=0;countif(o==get.seprate[count]){
flag=1;
break;
}
}
return(flag==1);
}
staticbooleanisoperate(charc){//判断是否是运算符
Toolsget=newTools();
intflag=0;
for(intcount=0;countif(c==(get.operate[count])){
flag=1;
break;
}
}
return(flag==1);
}
staticMonitoranalystoperate(chardoubles[])//此函数用于分析操作数组,并返回分析状态值给MONITOR,共输出程序调用
{
intcount;
intflag=0;
Toolstl=newTools();
Monitortemp=newMonitor();
Stringstr=newString(doubles);
for(count=0;doubles[count]!
='\0';count++);
str=str.substring(0,count);
for(inti=0;iif(str.equals(tl.doperate[i])){
flag=1;
break;
}
}
temp.flag=flag;
temp.string=str;
returntemp;
}
publicstaticvoidmain(Stringargs[])throwsIOException{
Toolsget=newTools();
FileReaderin=newFileReader("C:
\\myjava\\testdata.txt");
FileOutputStreamfile=newFileOutputStream("C:
\\myjava\\result.txt",true);
OutputStreamWriterout=newOutputStreamWriter(file);
inttemp;
intflag=0;
charoperate[]=newchar[get.maxsize];
intoperatecount=0;
intoperateflag=0;
Monitorr