| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 495 人关注过本帖
标题:转换汉字问题程序详细点注释,谢谢
取消只看楼主 加入收藏
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:2 
转换汉字问题程序详细点注释,谢谢

Java金额的中文大写

import java.io.*;
public class chineseMoney{
private String number[]=

{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String unit[]={"","拾","佰","仟"};
private String small[]={"角","分"};
//private String strNumber,strUnit,strAll;

//是否在number中
private boolean IsInNumber(String strNumber)
{
boolean inNumber=false;
for (int i=0;i<9;i++)
{
if (strNumber.compareTo (number[i])==0) inNumber=true;
}
return inNumber;
}


private String SplitChineseNumber(int intUnit,String strInt)
{
int l=strInt.length ();
int j,k,zeorCountTemp=0;
String strUnit="",strNumber="",strAll="";

//判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”;
boolean temp=false;
for (k=0;k<l;k++)
{
String strTemp=strInt.substring(k,k+1);
int intTemp=Integer.parseInt(strTemp);

if (intTemp!=0) temp=true;
}
if (temp==false)
{
if (intUnit==5)return "";
}


int checkK=0;
//正式开始转换
for (k=0;k<l;k++)
{
String strTemp=strInt.substring(k,k+1);
int intTemp=Integer.parseInt(strTemp);
strNumber= number[intTemp];

//j 从
j=l-1-k;

strUnit=unit[j];


//数值+单位
//如果数值=0,数值=“”
if (intTemp==0)
{
//
if (zeorCountTemp==0)
{
//单位=零
strUnit=strUnit.replace('拾','零');
strUnit=strUnit.replace('佰','零');
strUnit=strUnit.replace('仟','零');
}
else
{
//多零情况下,单位=“”
strUnit=strUnit.replaceAll("拾","");
strUnit=strUnit.replaceAll("佰","");
strUnit=strUnit.replaceAll("仟","");
}
zeorCountTemp++;
}
checkK=k;
strAll+=strNumber+strUnit;
}

return strAll;
}

private String onlyInt(int intInt)
{
String strInt;
strInt=String.valueOf(intInt);
int l=strInt.length();

String strAll=""; //按照四位 一分隔 来计算
if (l>8)//亿


{
strAll+=this.SplitChineseNumber(9,strInt.substring(0,l-8))+"

亿";
strAll+=this.SplitChineseNumber(5,strInt.substring(l-8,l-4));
strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"

元";
}
else if (l>4)//万 {
{ strAll+=this.SplitChineseNumber(5,strInt.substring(0,l-4));
strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"

元";

}
else if (l>0)
{
strAll+=this.SplitChineseNumber(1,strInt)+"元";
}//
//
//
//
// 100101000
int checkL=strAll.length();

char strTemp2;
for (int k=1;k<checkL;k++)
{
strTemp2=strAll.charAt(k);
if (strTemp2=='零')
{
//判断零的前后是否有数字,无数字则删除这个零
String strBeforeTemp=strAll.substring(k-1,k);
String strAfterTemp=strAll.substring(k+1,k+2);
if (!this.IsInNumber(strBeforeTemp)&&!this.IsInNumber

(strAfterTemp))
{
strBeforeTemp=strAll.substring(0,k);
strAfterTemp=strAll.substring(k+1,checkL);
strAll= strBeforeTemp+strAfterTemp;
break;
}

}
}

return strAll;

}

private String onlySmall(int intSmall)
{
String strNumber,strUnit,strAll;
strNumber="";strUnit="";strAll="";
String strSmall,strTemp;
strSmall=String.valueOf(intSmall);
int i;
if (intSmall>=10)
{
for (i=0;i<strSmall.length();i++)
{
strTemp=String.valueOf(intSmall).substring(i,i+1);
if (Integer.parseInt(strTemp)!=0)
{
strNumber=number[Integer.parseInt(strTemp)];
strUnit=small[i];
strAll+=strNumber+strUnit;
}
}
}
else
{
if (intSmall!=0)
{
strNumber=number[intSmall];
strUnit=small[1];
strAll+=strNumber+strUnit;
}
}

return strAll;
}

public String getChineseMoney(double number)
{
//四舍五入
number=(number*100+0.5)/100;

String strAll,strChineseInt,strChineseSmall,strZheng;;
int intInt,intSmall;
strChineseInt="";strChineseSmall="";strZheng="";

//整数部分
intInt=(int)( number*100/100);
if (intInt!=0)
{
strChineseInt=onlyInt(intInt);
}
//小数部分
double temp=(number-intInt)*100*100/100;
//对小数部分四舍五入
intSmall=(int)(temp*100+0.5)/100;
if (intSmall!=0)
{
strChineseSmall=onlySmall(intSmall);
}
else
{
strZheng="整";
}
strAll=strChineseInt+strChineseSmall+strZheng;
return strAll;
}
public static void main(String args[]) throws IOException
{
chineseMoney cm=new chineseMoney();
double money;
String strMoney,strChineseMoney;
strMoney="";
//读取
System.out.println("输入货币(四舍五入):");
BufferedReader cin = new BufferedReader(new InputStreamReader

(System.in));
strMoney = cin.readLine();
money=Double.parseDouble(strMoney);
//money=12346.465;//Double.parseDouble(strMoney);
strChineseMoney=cm.getChineseMoney(money);
System.out.println(strChineseMoney);
}

}

搜索更多相关主题的帖子: private String 汉字 注释 
2007-07-14 10:24
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 

再详细点!


骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-07-14 12:11
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 

把上面的算法简单下就好了!


骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-07-14 16:46
快速回复:转换汉字问题程序详细点注释,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029367 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved