java 输入阿拉伯数字 输出对应的符合一般读习惯的汉子。。 例如:输入123,输出:一百二十三
输入:100001,输出:十万零一输入:00001,输出:一输入:10101010输出:一千万零十万一千零十最多输入八位数就够了请高手指教...
输入: 100001, 输出:十万零一
输入:00001, 输出:一
输入:10101010 输出:一千万零十万一千零十
最多输入八位数就够了 请高手指教 展开
输入:00001, 输出:一
输入:10101010 输出:一千万零十万一千零十
最多输入八位数就够了 请高手指教 展开
展开全部
经常的悲剧是给渔他不一定懂或接受或承认,给鱼是肯定承认的
import java.util.Random;
public class Test{
static public void main(String 参数[]){
long test_nums[]={
43521,101230,550,90000,101,100001,
1000000000001L,1020304050607080901L
};
for(long n:test_nums)
System.out.println(n+" => "+numberChinese(n,true));
Random rnd=new Random();
for(int i=0;i<10;i++){
long n=rnd.nextInt();
System.out.println(n+" => 大写:"+numberChinese(n,true)+"\t小写:"+numberChinese(n,false)+"\n");
}
for(int i=0;i<10;i++){
long n=rnd.nextLong();
System.out.println(n+" => 大写:"+numberChinese(n,true)+"\t小写:"+numberChinese(n,false)+"\n");
}
}
static String numberChinese(long n,boolean big_case){
final char
big_units[]={'万','亿','兆','京','垓','秭','穰','沟','涧','正','载'},
BigCase_SmallUnits[]={'拾','佰','仟'},
BigCase_HanNumbers[]={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'},
SmallCase_SmallUnits[]={'十','百','千'},
SmallCase_HanNumbers[]={'〇','一','二','三','四','五','六','七','八','九'},
small_units[]=big_case?BigCase_SmallUnits:SmallCase_SmallUnits,
han_numbers[]=big_case?BigCase_HanNumbers:SmallCase_HanNumbers
;
boolean sign=true;
StringBuffer buf=new StringBuffer();
if(n<0){ sign=false; n=-n; }
StringBuffer buf_wan=new StringBuffer();
byte bu_count=0;
while(n>0){
short wan=(short) (n%10000);
if(bu_count>0 && wan>0) buf.insert(0,big_units[bu_count-1]);
byte su_count=0;
buf_wan.setLength(0);
boolean zero_written=true;
boolean full_thou=wan>=1000;
while(wan>0){
byte d=(byte) (wan%10);
if(su_count>0 && d>0) buf_wan.insert(0,small_units[su_count-1]);
if(d>0){
buf_wan.insert(0,han_numbers[d]);
zero_written=false;
}else if(!zero_written){
buf_wan.insert(0,han_numbers[0]);
zero_written=true;
}
su_count++;
wan/=10;
}
n/=10000;
if(!zero_written && n>0 && !full_thou) buf_wan.insert(0,han_numbers[0]);
buf.insert(0,buf_wan);
bu_count++;
}
buf.insert(0,sign?'正':'负');
//buf.append('整');
return buf.toString();
}
}
=========
输出
43521 => 正肆万叁仟伍佰贰拾壹
101230 => 正壹拾万壹仟贰佰叁拾
550 => 正伍佰伍拾
90000 => 正玖万
101 => 正壹佰零壹
100001 => 正壹拾万零壹
1000000000001 => 正壹兆零壹
1020304050607080901 => 正壹佰零贰京零叁佰零肆兆零伍佰零陆亿零柒佰零捌万零玖佰零壹
-870626527 => 大写:负捌亿柒仟零陆拾贰万陆仟伍佰贰拾柒 小写:负八亿七千〇六十二万六千五百二十七
452083322 => 大写:正肆亿伍仟贰佰零捌万叁仟叁佰贰拾贰 小写:正四亿五千二百〇八万三千三百二十二
1736927872 => 大写:正壹拾柒亿叁仟陆佰玖拾贰万柒仟捌佰柒拾贰 小写:正一十七亿三千六百九十二万七千八百七十二
-788902091 => 大写:负柒亿捌仟捌佰玖拾万贰仟零玖拾壹 小写:负七亿八千八百九十万二千〇九十一
-1660262757 => 大写:负壹拾陆亿陆仟零贰拾陆万贰仟柒佰伍拾柒 小写:负一十六亿六千〇二十六万二千七百五十七
-1185939347 => 大写:负壹拾壹亿捌仟伍佰玖拾叁万玖仟叁佰肆拾柒 小写:负一十一亿八千五百九十三万九千三百四十七
-1202080856 => 大写:负壹拾贰亿零贰佰零捌万零捌佰伍拾陆 小写:负一十二亿〇二百〇八万〇八百五十六
1708368852 => 大写:正壹拾柒亿零捌佰叁拾陆万捌仟捌佰伍拾贰 小写:正一十七亿〇八百三十六万八千八百五十二
-1256710731 => 大写:负壹拾贰亿伍仟陆佰柒拾壹万零柒佰叁拾壹 小写:负一十二亿五千六百七十一万〇七百三十一
-57875873 => 大写:负伍仟柒佰捌拾柒万伍仟捌佰柒拾叁 小写:负五千七百八十七万五千八百七十三
5902315104758286284 => 大写:正伍佰玖拾京贰仟叁佰壹拾伍兆壹仟零肆拾柒亿伍仟捌佰贰拾捌万陆仟贰佰捌拾肆 小写:正五百九十京二千三百一十五兆一千〇四十七亿五千八百二十八万六千二百八十四
-8913536431965551537 => 大写:负捌佰玖拾壹京叁仟伍佰叁拾陆兆肆仟叁佰壹拾玖亿陆仟伍佰伍拾伍万壹仟伍佰叁拾柒 小写:负八百九十一京三千五百三十六兆四千三百一十九亿六千五百五十五万一千五百三十七
6514129721133143404 => 大写:正陆佰伍拾壹京肆仟壹佰贰拾玖兆柒仟贰佰壹拾壹亿叁仟叁佰壹拾肆万叁仟肆佰零肆 小写:正六百五十一京四千一百二十九兆七千二百一十一亿三千三百一十四万三千四百〇四
5897410299815084609 => 大写:正伍佰捌拾玖京柒仟肆佰壹拾兆贰仟玖佰玖拾捌亿壹仟伍佰零捌万肆仟陆佰零玖 小写:正五百八十九京七千四百一十兆二千九百九十八亿一千五百〇八万四千六百〇九
-5847276531337976616 => 大写:负伍佰捌拾肆京柒仟贰佰柒拾陆兆伍仟叁佰壹拾叁亿叁仟柒佰玖拾柒万陆仟陆佰壹拾陆 小写:负五百八十四京七千二百七十六兆五千三百一十三亿三千七百九十七万六千六百一十六
3649514585430796591 => 大写:正叁佰陆拾肆京玖仟伍佰壹拾肆兆伍仟捌佰伍拾肆亿叁仟零柒拾玖万陆仟伍佰玖拾壹 小写:正三百六十四京九千五百一十四兆五千八百五十四亿三千〇七十九万六千五百九十一
-3922380750543270884 => 大写:负叁佰玖拾贰京贰仟叁佰捌拾兆柒仟伍佰零伍亿肆仟叁佰贰拾柒万零捌佰捌拾肆 小写:负三百九十二京二千三百八十兆七千五百〇五亿四千三百二十七万〇八百八十四
-6675828172300957892 => 大写:负陆佰陆拾柒京伍仟捌佰贰拾捌兆壹仟柒佰贰拾叁亿零玖拾伍万柒仟捌佰玖拾贰 小写:负六百六十七京五千八百二十八兆一千七百二十三亿〇九十五万七千八百九十二
-5073928885458170749 => 大写:负伍佰零柒京叁仟玖佰贰拾捌兆捌仟捌佰伍拾肆亿伍仟捌佰壹拾柒万零柒佰肆拾玖 小写:负五百〇七京三千九百二十八兆八千八百五十四亿五千八百一十七万〇七百四十九
6475927718150212399 => 大写:正陆佰肆拾柒京伍仟玖佰贰拾柒兆柒仟壹佰捌拾壹亿伍仟零贰拾壹万贰仟叁佰玖拾玖 小写:正六百四十七京五千九百二十七兆七千一百八十一亿五千〇二十一万二千三百九十九
import java.util.Random;
public class Test{
static public void main(String 参数[]){
long test_nums[]={
43521,101230,550,90000,101,100001,
1000000000001L,1020304050607080901L
};
for(long n:test_nums)
System.out.println(n+" => "+numberChinese(n,true));
Random rnd=new Random();
for(int i=0;i<10;i++){
long n=rnd.nextInt();
System.out.println(n+" => 大写:"+numberChinese(n,true)+"\t小写:"+numberChinese(n,false)+"\n");
}
for(int i=0;i<10;i++){
long n=rnd.nextLong();
System.out.println(n+" => 大写:"+numberChinese(n,true)+"\t小写:"+numberChinese(n,false)+"\n");
}
}
static String numberChinese(long n,boolean big_case){
final char
big_units[]={'万','亿','兆','京','垓','秭','穰','沟','涧','正','载'},
BigCase_SmallUnits[]={'拾','佰','仟'},
BigCase_HanNumbers[]={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'},
SmallCase_SmallUnits[]={'十','百','千'},
SmallCase_HanNumbers[]={'〇','一','二','三','四','五','六','七','八','九'},
small_units[]=big_case?BigCase_SmallUnits:SmallCase_SmallUnits,
han_numbers[]=big_case?BigCase_HanNumbers:SmallCase_HanNumbers
;
boolean sign=true;
StringBuffer buf=new StringBuffer();
if(n<0){ sign=false; n=-n; }
StringBuffer buf_wan=new StringBuffer();
byte bu_count=0;
while(n>0){
short wan=(short) (n%10000);
if(bu_count>0 && wan>0) buf.insert(0,big_units[bu_count-1]);
byte su_count=0;
buf_wan.setLength(0);
boolean zero_written=true;
boolean full_thou=wan>=1000;
while(wan>0){
byte d=(byte) (wan%10);
if(su_count>0 && d>0) buf_wan.insert(0,small_units[su_count-1]);
if(d>0){
buf_wan.insert(0,han_numbers[d]);
zero_written=false;
}else if(!zero_written){
buf_wan.insert(0,han_numbers[0]);
zero_written=true;
}
su_count++;
wan/=10;
}
n/=10000;
if(!zero_written && n>0 && !full_thou) buf_wan.insert(0,han_numbers[0]);
buf.insert(0,buf_wan);
bu_count++;
}
buf.insert(0,sign?'正':'负');
//buf.append('整');
return buf.toString();
}
}
=========
输出
43521 => 正肆万叁仟伍佰贰拾壹
101230 => 正壹拾万壹仟贰佰叁拾
550 => 正伍佰伍拾
90000 => 正玖万
101 => 正壹佰零壹
100001 => 正壹拾万零壹
1000000000001 => 正壹兆零壹
1020304050607080901 => 正壹佰零贰京零叁佰零肆兆零伍佰零陆亿零柒佰零捌万零玖佰零壹
-870626527 => 大写:负捌亿柒仟零陆拾贰万陆仟伍佰贰拾柒 小写:负八亿七千〇六十二万六千五百二十七
452083322 => 大写:正肆亿伍仟贰佰零捌万叁仟叁佰贰拾贰 小写:正四亿五千二百〇八万三千三百二十二
1736927872 => 大写:正壹拾柒亿叁仟陆佰玖拾贰万柒仟捌佰柒拾贰 小写:正一十七亿三千六百九十二万七千八百七十二
-788902091 => 大写:负柒亿捌仟捌佰玖拾万贰仟零玖拾壹 小写:负七亿八千八百九十万二千〇九十一
-1660262757 => 大写:负壹拾陆亿陆仟零贰拾陆万贰仟柒佰伍拾柒 小写:负一十六亿六千〇二十六万二千七百五十七
-1185939347 => 大写:负壹拾壹亿捌仟伍佰玖拾叁万玖仟叁佰肆拾柒 小写:负一十一亿八千五百九十三万九千三百四十七
-1202080856 => 大写:负壹拾贰亿零贰佰零捌万零捌佰伍拾陆 小写:负一十二亿〇二百〇八万〇八百五十六
1708368852 => 大写:正壹拾柒亿零捌佰叁拾陆万捌仟捌佰伍拾贰 小写:正一十七亿〇八百三十六万八千八百五十二
-1256710731 => 大写:负壹拾贰亿伍仟陆佰柒拾壹万零柒佰叁拾壹 小写:负一十二亿五千六百七十一万〇七百三十一
-57875873 => 大写:负伍仟柒佰捌拾柒万伍仟捌佰柒拾叁 小写:负五千七百八十七万五千八百七十三
5902315104758286284 => 大写:正伍佰玖拾京贰仟叁佰壹拾伍兆壹仟零肆拾柒亿伍仟捌佰贰拾捌万陆仟贰佰捌拾肆 小写:正五百九十京二千三百一十五兆一千〇四十七亿五千八百二十八万六千二百八十四
-8913536431965551537 => 大写:负捌佰玖拾壹京叁仟伍佰叁拾陆兆肆仟叁佰壹拾玖亿陆仟伍佰伍拾伍万壹仟伍佰叁拾柒 小写:负八百九十一京三千五百三十六兆四千三百一十九亿六千五百五十五万一千五百三十七
6514129721133143404 => 大写:正陆佰伍拾壹京肆仟壹佰贰拾玖兆柒仟贰佰壹拾壹亿叁仟叁佰壹拾肆万叁仟肆佰零肆 小写:正六百五十一京四千一百二十九兆七千二百一十一亿三千三百一十四万三千四百〇四
5897410299815084609 => 大写:正伍佰捌拾玖京柒仟肆佰壹拾兆贰仟玖佰玖拾捌亿壹仟伍佰零捌万肆仟陆佰零玖 小写:正五百八十九京七千四百一十兆二千九百九十八亿一千五百〇八万四千六百〇九
-5847276531337976616 => 大写:负伍佰捌拾肆京柒仟贰佰柒拾陆兆伍仟叁佰壹拾叁亿叁仟柒佰玖拾柒万陆仟陆佰壹拾陆 小写:负五百八十四京七千二百七十六兆五千三百一十三亿三千七百九十七万六千六百一十六
3649514585430796591 => 大写:正叁佰陆拾肆京玖仟伍佰壹拾肆兆伍仟捌佰伍拾肆亿叁仟零柒拾玖万陆仟伍佰玖拾壹 小写:正三百六十四京九千五百一十四兆五千八百五十四亿三千〇七十九万六千五百九十一
-3922380750543270884 => 大写:负叁佰玖拾贰京贰仟叁佰捌拾兆柒仟伍佰零伍亿肆仟叁佰贰拾柒万零捌佰捌拾肆 小写:负三百九十二京二千三百八十兆七千五百〇五亿四千三百二十七万〇八百八十四
-6675828172300957892 => 大写:负陆佰陆拾柒京伍仟捌佰贰拾捌兆壹仟柒佰贰拾叁亿零玖拾伍万柒仟捌佰玖拾贰 小写:负六百六十七京五千八百二十八兆一千七百二十三亿〇九十五万七千八百九十二
-5073928885458170749 => 大写:负伍佰零柒京叁仟玖佰贰拾捌兆捌仟捌佰伍拾肆亿伍仟捌佰壹拾柒万零柒佰肆拾玖 小写:负五百〇七京三千九百二十八兆八千八百五十四亿五千八百一十七万〇七百四十九
6475927718150212399 => 大写:正陆佰肆拾柒京伍仟玖佰贰拾柒兆柒仟壹佰捌拾壹亿伍仟零贰拾壹万贰仟叁佰玖拾玖 小写:正六百四十七京五千九百二十七兆七千一百八十一亿五千〇二十一万二千三百九十九
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询