把数字转换为人民币大写(用于银行系统)
2008-12-13 20:55
471 查看
大二是老师让做一个综合试验::用C++实现简易银行系统,其中用到在打印流水账时要求把金额转换为人民币大写...当时傻里吧唧的,,,随便拷贝了个同学的应付老师交了了事...前一段一个大二的弟兄向我提起银行程序..问起金额转换,起初心想要处理零零等问题麻烦,结果一个同学说四位,四位处理,OK..豁然开朗,顺利完工
/**
*@author sunpander
*time: 08-12-11 19:16
* 把输入的数字转换成人民币大写的形式
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ChangeNumToRMB {
String moneyStrs[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean isDebug = true;
while(isDebug)
{
int num =0;
String changedStr ="";
System.out.println("请输入需要转换的金额:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean isWrongInput = true;
while(isWrongInput)
{
try {
String str = br.readLine();
num = Integer.parseInt(str);
} catch (Exception e) {
System.out.println("输入数字有误,必须是:0"+"到"+Integer.MAX_VALUE+" 的整数");
// TODO Auto-generated catch block
//e.printStackTrace();
isWrongInput = true;
continue;
}
isWrongInput = false;
}
ChangeNumToRMB chan = new ChangeNumToRMB();
changedStr=chan.getChangedString(num);
}
}
public String getChangedString(int num)
{
//Money用于存放输入的金额数
int moneyNum=num;
String moneyStr="";
System.out.println("输入的钱数是:");
if(moneyNum<0)
{
System.out.println("数字必须大于零");
}
else if(moneyNum==0)
{
moneyStr = "零元";
}
//只有四位数,即最大9999.小于10000
else if(moneyNum<10000)
{
moneyStr = this.getFourNumStr(moneyNum)+"元";
}
//大于一万,小于一千万
else if(moneyNum<=10000000)// && moneyNum>10000)
{
int firstFourNum,lastFourNum;
firstFourNum =moneyNum/10000;
lastFourNum =moneyNum%10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if(!lastFourStr.contains("仟"))
lastFourStr="零"+lastFourStr;
moneyStr=firstFourStr+"万"+lastFourStr+"元";
}
//大于一千万.即上亿但小于最大整数
else if(moneyNum<Integer.MAX_VALUE)//&& moneyNum>10000000)
{
int firstFourNum,secondFourNum,lastFourNum;
firstFourNum =moneyNum/100000000;
secondFourNum =(moneyNum/10000)%1000;
lastFourNum =moneyNum%10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String secondFourStr = this.getFourNumStr(secondFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if(!lastFourStr.contains("仟"))
lastFourStr="零"+lastFourStr;
if(!secondFourStr.contains("仟"))
secondFourStr="零"+secondFourStr ;
moneyStr=firstFourStr+"亿"+secondFourStr+"万"+lastFourStr+"元";
}
else
System.out.println("someting is wrong");
System.out.println(moneyStr);
return moneyStr;
}
public String getFourNumStr(int fourNum)
{
int qian,bai,shi,ge;
ge =fourNum%10;
shi =(fourNum%100 )/10;
bai = (fourNum%1000)/100;
qian = fourNum/1000;
String strTemp="";
if(qian!=0)
{
strTemp=strTemp.concat(moneyStrs[qian]+"仟");
strTemp=strTemp.concat(moneyStrs[bai]+"佰");
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge]);
strTemp=strTemp.replace("零佰", "零");
strTemp=strTemp.replace("零什", "零");
strTemp=strTemp.replace("零零", "零");
strTemp=strTemp.replace("零零", "零");
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else if(bai!=0)
{
strTemp=strTemp.concat(moneyStrs[bai]+"佰");
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge]);
strTemp=strTemp.replace("零什", "零");
strTemp=strTemp.replace("零零", "零");
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else if(shi!=0)
{
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge] );
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else
strTemp.concat(moneyStrs[ge]);
return strTemp;
}
}
今天上午快十点起来,抄了几份试验报告,下午自习看了云风的<游戏之旅--我的编程感悟>..晚上团契祷告会,我刚回来,,今天就把前2天的个程序发布下吧!!
还有个问题处理小数点..按说找到小数点位置在分割开处理就可以啦,.没弄.弄了在发布吧!!现在不想编程,,,想随便转转,看看云风去!!!!(决定以后只要看本专业相关的书,不管受益多少,都要总结下)今下午的当然不例外哈!!!
/**
*@author sunpander
*time: 08-12-11 19:16
* 把输入的数字转换成人民币大写的形式
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ChangeNumToRMB {
String moneyStrs[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean isDebug = true;
while(isDebug)
{
int num =0;
String changedStr ="";
System.out.println("请输入需要转换的金额:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean isWrongInput = true;
while(isWrongInput)
{
try {
String str = br.readLine();
num = Integer.parseInt(str);
} catch (Exception e) {
System.out.println("输入数字有误,必须是:0"+"到"+Integer.MAX_VALUE+" 的整数");
// TODO Auto-generated catch block
//e.printStackTrace();
isWrongInput = true;
continue;
}
isWrongInput = false;
}
ChangeNumToRMB chan = new ChangeNumToRMB();
changedStr=chan.getChangedString(num);
}
}
public String getChangedString(int num)
{
//Money用于存放输入的金额数
int moneyNum=num;
String moneyStr="";
System.out.println("输入的钱数是:");
if(moneyNum<0)
{
System.out.println("数字必须大于零");
}
else if(moneyNum==0)
{
moneyStr = "零元";
}
//只有四位数,即最大9999.小于10000
else if(moneyNum<10000)
{
moneyStr = this.getFourNumStr(moneyNum)+"元";
}
//大于一万,小于一千万
else if(moneyNum<=10000000)// && moneyNum>10000)
{
int firstFourNum,lastFourNum;
firstFourNum =moneyNum/10000;
lastFourNum =moneyNum%10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if(!lastFourStr.contains("仟"))
lastFourStr="零"+lastFourStr;
moneyStr=firstFourStr+"万"+lastFourStr+"元";
}
//大于一千万.即上亿但小于最大整数
else if(moneyNum<Integer.MAX_VALUE)//&& moneyNum>10000000)
{
int firstFourNum,secondFourNum,lastFourNum;
firstFourNum =moneyNum/100000000;
secondFourNum =(moneyNum/10000)%1000;
lastFourNum =moneyNum%10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String secondFourStr = this.getFourNumStr(secondFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if(!lastFourStr.contains("仟"))
lastFourStr="零"+lastFourStr;
if(!secondFourStr.contains("仟"))
secondFourStr="零"+secondFourStr ;
moneyStr=firstFourStr+"亿"+secondFourStr+"万"+lastFourStr+"元";
}
else
System.out.println("someting is wrong");
System.out.println(moneyStr);
return moneyStr;
}
public String getFourNumStr(int fourNum)
{
int qian,bai,shi,ge;
ge =fourNum%10;
shi =(fourNum%100 )/10;
bai = (fourNum%1000)/100;
qian = fourNum/1000;
String strTemp="";
if(qian!=0)
{
strTemp=strTemp.concat(moneyStrs[qian]+"仟");
strTemp=strTemp.concat(moneyStrs[bai]+"佰");
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge]);
strTemp=strTemp.replace("零佰", "零");
strTemp=strTemp.replace("零什", "零");
strTemp=strTemp.replace("零零", "零");
strTemp=strTemp.replace("零零", "零");
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else if(bai!=0)
{
strTemp=strTemp.concat(moneyStrs[bai]+"佰");
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge]);
strTemp=strTemp.replace("零什", "零");
strTemp=strTemp.replace("零零", "零");
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else if(shi!=0)
{
strTemp=strTemp.concat(moneyStrs[shi]+"什");
strTemp=strTemp.concat(moneyStrs[ge] );
if(strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length()-1);
}
else
strTemp.concat(moneyStrs[ge]);
return strTemp;
}
}
今天上午快十点起来,抄了几份试验报告,下午自习看了云风的<游戏之旅--我的编程感悟>..晚上团契祷告会,我刚回来,,今天就把前2天的个程序发布下吧!!
还有个问题处理小数点..按说找到小数点位置在分割开处理就可以啦,.没弄.弄了在发布吧!!现在不想编程,,,想随便转转,看看云风去!!!!(决定以后只要看本专业相关的书,不管受益多少,都要总结下)今下午的当然不例外哈!!!
相关文章推荐
- 将一串数字转化为中文字符串,使用 C# 将数字转换成大写人民币 (例如:用户输入2300,系统就会显示两千三百元 )
- 昨天面试的一道编程题 将人民币大写转换成数字,并且保证数据不能超过一亿
- 将数字金额转换为人民币大写字符串
- 人民币阿拉伯数字转换为汉字大写 code
- 将阿拉伯数字转换成中文大写人民币
- 修改Number类,增加将数字转换为人民币大写输出方法
- -------------------------SQL SERVER函数将人民币数字转换成大写形式---------------------
- 数字转换为人民币大写
- JS数字转换为人民币大写
- 数字转换为汉语中人民币的大写
- 数字转换成中文人民币大写
- java代码:金融系统中,将数字转换成中文金额大写形式
- EBS开发_数字转换成人民币大写
- 将数字转换成大写的人民币表达式的js函数
- .net 将数字转换为人民币大写
- java实现将数字转换成人民币大写
- 数字金额转换大写人民币
- Javascript:将人民币数字转换成大写形式
- js将数字金额转换为大写人民币
- 将数字转换成人民币大写的小程序