将int型数据转换为中文表达方式
2012-04-14 10:41
211 查看
package trans; import java.util.Scanner; public class Trans { private static String[] ChinaDigit = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; // unit是组内单位 private static String[] UNIT = { "", "", "十", "百", "千" }; // bigunit是组间单位,由于int型数据最大21亿多,所以,这些单位就足够了 private static String[] BIGUNIT = { "", "万", "亿" }; private char[] digit; /** * 主函数,负责分组,并循环处理这些分组 * * @param n * @return */ public String trans(int n) { StringBuffer buff = new StringBuffer(); digit = String.valueOf(n).toCharArray(); int length = digit.length; // 获得头部分组的下标(从左往右,分组的下标递减,最右边一个分组是0) int pos = (length - 1) / 4; // 获得头部分组的长度(即位数) int headLength = (length - 1) % 4 + 1; // 处理完头分组并在其后加上组间单位,如万、亿 buff.append(partTrans(0, headLength) + BIGUNIT[pos--]); // 处理接下来的分组 for (int i = headLength; i < length; i = i + 4) { buff.append(partTrans(i, i + 4) + BIGUNIT[pos--]); } return buff.toString(); } /** * 处理分组,从高位到低位处理(左到右) * * @param start * @param end * @return */ private String partTrans(int start, int end) { StringBuffer buff = new StringBuffer(); // 标记上一个处理的数字是不是0 boolean isPreDigitZero = false; // 循环处理组内所有数字 for (int i = start; i < end; i++) { int cur = digit[i] - '0'; // 当前数字 // 保证多个零连着时只加入一个零,且该零不在组内最后位置 if (cur != 0) { if (isPreDigitZero == true) { buff.append(ChinaDigit[0]); } buff.append(ChinaDigit[cur] + UNIT[end - i]); isPreDigitZero = false; } else { isPreDigitZero = true; } } return buff.toString(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("*********阿拉伯数字转为中文表示******"); System.out.println("请输入一个正整数或输入-1退出:"); int number = scanner.nextInt(); // 输入-1退出 if (number == -1) break; Trans transtor = new Trans(); String money = transtor.trans(number); System.out.println(number + "转换后的结果是:" + money); } System.out.println("Bye-bye!"); } }
将int型数据转换为中文表达方式。
from:http://blog.csdn.net/xiechao240/article/details/5900699
相关文章推荐
- 阿拉伯数字转换成中文大写,中文货币的表达方式 python
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
- 【Scikit-Learn 中文文档】预处理数据 - 数据集转换 - 用户指南 | ApacheCN
- 将时间类型DateTime数据转换成毫秒Int型
- 【Scikit-Learn 中文文档】预处理数据 - 数据集转换 - 用户指南 | ApacheCN
- QuickReport 转换成 FastReport时,中文乱码的解决方式
- JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法
- CheckboxSelectionModel 几种获取值的方式,以及record数据通过combo来转换
- 中文字体在 CSS 中的表达方式
- [sql技巧]int型的(毫)秒数据如何转换成字符型的hh:mm:ss时间格式
- 总结解决springmvc提交数据中文乱码的几种方式、控制台乱码
- 【Scikit-Learn 中文文档】预处理数据 - 数据集转换 - 用户指南 | ApacheCN
- C#调用C++的DLL 所有数据类型转换方式
- iOS开发学习专题-基础知识(四) NSNumber容器 NSData数据 NSData转换的详细使用方式
- 中文字体在 CSS 中的表达方式
- 在UTF-8页中接收和使用以GB2312方式进行URL编码的中文数据
- C#调用C++的DLL搜集整理的所有数据类型转换方式
- tomcat发布项目 ajax方式post请求返回数据中文乱码问题(Eclipse中tomcat正常)
- MSSQL中,将text,ntext转换为int型数据
- phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护