java程序:转化金额
2020-04-02 16:04:13来源:博客园 阅读 ()
java程序:转化金额
在处理财务账款时,需要将转账金额写成大写的。也就是说,如果要转账123456.00元,则需要写成“壹拾贰万叁仟肆佰伍拾陆元整”。
所以常常需要通过程序控制自动进行转换。本实例实现了小写金额到大写金额的转换。
具体代码如下:
import java.text.DecimalFormat; import java.util.*; //@北冥道人骑鲲打代码 public class f2 { private static String[] numBig = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; private static String[] numInt = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" };// 整数单位 private static String[] numFloat = { "厘", "分", "角" };// 小数单位 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入金额"); double money = input.nextDouble(); //格式化double数字 DecimalFormat df = new DecimalFormat("#0.###");//此时strNum小数位最多3位 String strNum = df.format(money); if (strNum.indexOf(".") > 0 ) {//判断是否有小数 String strMoneyInt = strNum.substring(0, strNum.indexOf(".")); if(strMoneyInt.length() > 12){ System.out.println("数字太大了,转换不了"); }else{ System.out.println(getInt(strNum) + "元" + getDouble(strNum)); } } else{ if(strNum.length() > 12){ System.out.println("数字太大了,转换不了"); }else{ System.out.println(getInt(strNum) + "元整"); } } } //整数部分 public static String getInt(String str) { if(str.indexOf(".") != -1){ str = str.substring(0,str.indexOf("."));//截取小数点前面的数字 } str = new StringBuffer(str).reverse().toString();//反转字符串 StringBuffer strB = new StringBuffer(); //创建一个空的StringBuffer对象 for (int i = 0; i < str.length(); i++){ //把单位添加进去 strB.append(numInt[i]); strB.append(numBig[(str.charAt(i)-48)]); //str.charAt(i)-48,这里-48是因为str.charAt(i)-48为ASCII码 //而参照ASCII码: //ASCII码为 48 ==》0 //ASCII码为 49 ==》1 ... } str = strB.reverse().toString();//把反转过的字符串还原 //替换字符串多于的字符 if (str.indexOf("零拾") != -1){str = str.replace( "零拾", "零");} if (str.indexOf("零佰") != -1){str = str.replace( "零拾", "零");} if (str.indexOf("零仟") != -1){str = str.replace( "零拾", "零");} if (str.indexOf("零万") != -1){str = str.replace( "零拾", "万");} if (str.indexOf("零亿") != -1){str = str.replace( "零拾", "亿");} if (str.indexOf("零零") != -1){str = str.replace( "零拾", "零");} if (str.indexOf("亿万") != -1){str = str.replace( "零拾", "亿");} //除去零的结尾 if (str.lastIndexOf("零") == str.length() - 1) { str = str.substring(0, str.length() - 1); } return str; } //小数部分 public static String getDouble(String str) { str = str.substring(str.indexOf(".") + 1);//截取小数点后的数字 //解决单位错位 if(str.length() == 1){str = str +"00";} else if(str.length() == 2){str = str +"0";} str = new StringBuffer(str).reverse().toString();//反转字符串 StringBuffer strB = new StringBuffer();//创建一个空的StringBuffer对象 for (int i = 0; i < str.length(); i++) {//把单位添加进去 strB.append(numFloat[i]); strB.append(numBig[str.charAt(i) - 48]); } str = strB.reverse().toString();//把反转过的字符串还原 //替换字符串多于的字符 if (str.indexOf("零角") != -1){str = str.replace( "零角", "零");} if (str.indexOf("零分") != -1){str = str.replace( "零分", "零");} if (str.indexOf("零厘") != -1){str = str.replace( "零厘", "零");} if (str.indexOf("零零") != -1){str = str.replace( "零零", "零");} //除去零的结尾 if (str.lastIndexOf("零") == str.length() - 1) { str = str.substring(0, str.length() - 1); } return str; } }
运行截图:
原文链接:https://www.cnblogs.com/beimingdaoren/p/12617899.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash