import java.util.*;
class Main{
public static void main(String[] args){
//toChineseNumber(12341234);
toChineseNumber(400001204);
toChineseNumber(400000000);
//toChineseNumber(1204);
//toChineseNumber(1004);
//toChineseNumber(104);
//toChineseNumber(100);
}
static String[] bigUnits=new String[]{"","万","亿"};
//万亿以下正整数
static void toChineseNumber(int num){
List<Integer> list = new ArrayList<>();
while(num > 0){
list.add(num % 10000);
num /= 10000;
}
StringBuilder builder = new StringBuilder();
for (int i = list.size()-1; i >=0; i--){
String f4=trans4(String.valueOf(list.get(i)).toCharArray());
if("".equals(f4)){
builder.append('零');
}
else {
String uf4 = bigUnits[i];
builder.append(f4).append(uf4);
}
}
System.out.println(handleZero(builder.toString()));
}
static char[] wei=new char[]{'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
static String[] units=new String[]{"","十","百","千"};
static String trans4(char[] num){
int n=num.length;
String res="";
//1234
for(int i = 0 ; i < n ; i++){
char c=wei[num[i]-'0'];
String u=units[n-i-1];
if(c=='零'){
u="";
}
res+=c+u;
}
return handleZero(res);
}
static String handleZero(String num){
char[] str = num.toCharArray();
StringBuilder sb = new StringBuilder();
for (int l=0,r; l < str.length; l++) {
sb.append(str[l]);
r=l;
if(str[r]=='零'){
while(r+1<str.length && str[r+1]=='零'){
r++;
}
}
l=r;
}
if(sb.charAt(sb.length()-1)=='零'){sb.deleteCharAt(sb.length()-1);}
return sb.toString();
}
}
[Java]阿拉伯数字转中文数字
最新推荐文章于 2024-09-16 21:37:07 发布