黑马程序员技术交流社区
标题:
求阿拉伯数字转换成中国传统形式,有更简单的方法吗,请各位大神指点
[打印本页]
作者:
星陨
时间:
2016-12-14 11:13
标题:
求阿拉伯数字转换成中国传统形式,有更简单的方法吗,请各位大神指点
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
// 键盘录入一个整数
String num = sc.next();
long price = Long.parseLong(num);
String[] str1 = "零 壹 贰 叁 肆 伍 陆 柒 捌 玖".split(" ");
String[] str2 = "圆整 拾 佰 仟 萬 拾萬 佰萬 仟萬 亿 拾亿 佰亿 仟亿".split(" ");
String str3 = "";
int pre = 0;
for (int i = 1; i <= num.length(); i++) {
long j = price % 10;
price = price / 10;
if (j != 0) {
if (pre != 0 && i - pre >= 2) {// 带零
str3 = str1[(int) j] + str2[i - 1] + str1[0] + str3;
} else {// 不带零
str3 = str1[(int) j] + str2[i - 1] + str3;
}
pre = i;
}
}
System.out.println(str3);
}
作者:
Lee_Hoon_Leong
时间:
2016-12-14 16:37
str1和str2建议换成字符数组,而且352万转换成中文形式不是三百万五十万二万。
作者:
Lee_Hoon_Leong
时间:
2016-12-14 16:39
缓冲字符可以避免内存的浪费
作者:
Lee_Hoon_Leong
时间:
2016-12-14 16:43
package com.itheima;
import java.util.Scanner;
public class Test_10 {
/**
*10、金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
* 思路: 1.对阿拉伯中的数字进行简单的替换,1替换成壹,0替换成零。需要在每一个数字后面加上各自位数,零佰壹拾
* 2.对全部替换后的字符串进行正则的修改,使之变成符合我们读写习惯的形式
*/
public static void main(String[] args) {
System.out.println("输入转换的金额(最大12位):");
//从控制台读取Long类型数据,int型装不下
Scanner sc=new Scanner(System.in);
long money=sc.nextLong();
//调用getMoney方法返回中国传统形式的数字
System.out.println(getMoney(money));
}
private static String getMoney(long money) {
// 用字符数组对数字进行简单的替换,其中count根据money最后一位的得到,unit每次+1
char[] unit={'圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'};
char[] count={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
//用缓冲字符串存放
StringBuilder sb=new StringBuilder();
//每进行一次循环,money都会除10,直到为0
for (int i = 0; money!=0; i++) {
//先在字符串的最前端插入位数
sb.insert(0, unit[i]);
//然后再在前端插入数字的个数
sb.insert(0, count[(int) (money%10)]);
money/=10;
}
//此时得到格式:壹仟零佰壹拾零亿零仟零佰零拾零万壹仟零佰壹拾零圆,需要转换成 壹仟零壹拾亿零壹仟零壹拾圆整
//需要把其中的零拾、零佰、零仟替换为零,亿前面的多个零去除变成亿,万同样,多个零替换为一个零,保证至少有一个零可读
//零园也要替换为圆。可能会出现”亿万“的情况 ,需要替换成”亿零“,最后在末尾添加上"整"结束替换
return sb.toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+亿", "亿")
.replaceAll("零+万", "万").replaceAll("亿万", "亿零").replaceAll("零+", "零")
.replaceAll("零圆", "圆")+"整";
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2