如何把阿拉伯数字转换为中文大写?
2013-10-23 18:13
543 查看
public class Chinese { public String returnResult(long num) { String numStr = String.valueOf(num); // 主要理念是把数字字符串最终分隔为四个一组四个一组的,不足的不管。 if (numStr.length() > 8 & numStr.length() < 16) { // 定义一个数组,存储整个字条串分隔后的字符串。然后两次递归调用。 // 调用完全后,得到总的大写字符串。 String[] firstSplit = new String[2]; firstSplit[0] = numStr.substring(0, numStr.length() - 8); firstSplit[1] = numStr.substring(numStr.length() - 8); String result1 = getString(firstSplit[0]) + "億"; String result2 = getString(firstSplit[1]); return result1 + result2; } else { return getString(numStr); } } // 进行一次递归调用,得到两组四位数字的大字字串 public String getString(String str) { if (str.length() > 4) { String[] secondSplit = new String[2]; secondSplit[0] = str.substring(0, str.length() - 4); secondSplit[1] = str.substring(str.length() - 4); String result1 = getRe(secondSplit[0]); String result2 = getRe(secondSplit[1]); // 确定是否加“万”字 if (!secondSplit[0].equals("0000")) { result1 += "萬"; } return result1 + result2; } else { return getRe(str); } } int[] value = { 1000, 100, 10 }; // 将四位数以内的字符串返回为正确的大写称呼 比如1234 返回:一千二百三十四 public String getRe(String doWith) { char[] number = doWith.toCharArray(); int length = number.length; String re = ""; for (int i = 0; i < length; i++) { switch (number[i]) { case '0': if (re.endsWith("零")) { re += ""; } else { re += "零"; } break; case '1': re += "壹"; break; case '2': re += "贰"; break; case '3': re += "叁"; break; case '4': re += "肆"; break; case '5': re += "伍"; break; case '6': re += "陆"; break; case '7': re += "柒"; break; case '8': re += "捌"; break; case '9': re += "玖"; break; } int index = (int) Math.pow(10, length - i - 1); if ("0".equals(String.valueOf(number[i]))) { index = -1; } switch (index) { case 1000: re += "仟"; break; case 100: re += "佰"; break; case 10: re += "拾"; break; } } if (re.endsWith("零")) { re = re.substring(0, re.length() - 1); } return re; } public static void main(String[] args) { Chinese ch = new Chinese(); long ll = 100000001L; System.out.println(ch.returnResult(ll)); } }
自己将类中的getRe()方法修改了下,经测试没发现问题:
public String getRe(String doWith) { String[] dight = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; String[] rate = {"", "十", "百", "千"}; int length = doWith.length(); int dow = Integer.parseInt(doWith); String re = ""; for(int i=0; i<length; i++) { int index = (int) Math.pow(10, length - i -1); int bit = dow / index; if(bit == 0) { if (re.endsWith("零")) { re += ""; } else re += dight[bit]; } else re += dight[bit] + rate[String.valueOf(index).length() - 1]; dow = dow % index; } if (re.endsWith("零")) { re = re.substring(0, re.length() - 1); } return re; }
ps:如果有问题,欢迎指正!
相关文章推荐
- 如何把输入的阿拉伯数字金额转换成中文大写金额
- 如何把阿拉伯数字转换为中文大写?
- [小技巧] 如何自动将阿拉伯数字转换为中文大写数字
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。
- 将阿拉伯数字表示的货币数值转换成以中文大写表示的货币数值
- 一个将阿拉伯数字转换成中文大写地好算法
- C#阿拉伯数字金额转换为中文大写金额
- 阿拉伯数字金额转换成中文大写
- js中如何将小写数字金额转换成大写中文数字
- 月经型笔试题:“数字金额如何转换为中文大写?”思路清晰版写法
- 阿拉伯数字金额转换为中文大写之存储过程(更新版)
- 将阿拉伯数字123转换为中文大写
- C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
- 阿拉伯数字转换成对应的大写中文输出
- 将阿拉伯数字转换成中文大写的函数(javascript)
- 关于C#实现阿拉伯数字转换成中文大写
- C#写的将阿拉伯数字转换成中文大写金额代码
- 使用C#实现阿拉伯数字到大写中文的转换
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
- 用java代码将阿拉伯数字金额转换成中文大写