还是要简洁,直接贴代码:
package Num2hanzi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Num2hanzi {
private static String[] hanzinum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static String[] hanziwei = {"","拾","佰","仟"};
private static String[] hanziduan = {"","万","亿"};
private static int num;//输入的数字
private static int duannum = 0;
private static int duantemp = 0;
private static int[] duan = new int[10];
private static int weinum = 0;
private static int weitemp = 0;
private static int[] wei = new int[100];
public static void main(String args[]) throws IOException{
//控制台读入数字
num = Integer.parseInt((new BufferedReader(new InputStreamReader(System.in))).readLine());
divideDuanWei(num);
System.out.println(convert2hanzi());
}
//获取位数长度
public static int getLength(int[] wei){
int length = 0;
for(int i=wei.length-1;i>=0;i--){
if(wei[i] == 0){
length++;
}else {
break;
}
}
length = wei.length - (length--);
return length;
}
//得到最终字符串
public static String convert2hanzi(){
int weilength = getLength(wei);
int duanlength = getLength(duan);
String convertResult="";
int i=duanlength-1;//段的数目
int j=weilength-1;//位的数目
int k;//起始汉字位
if(weilength%hanziwei.length==0){
k=hanziwei.length - 1;
} else {
k=weilength%hanziwei.length - 1;
}
int l = duannum -1;//起始段位
for(;i>=0 && l>=0;i--,l--){
for(;j>=0 && k>=0 ;j--,k--){
if(k==0 && wei[j]==0) continue;//末位为零的时候,省略零
convertResult += hanzinum[wei[j]];
convertResult += hanziwei[k];
}
convertResult += hanziduan[l];
k = hanziwei.length - 1;
}
return convertResult;
}
public static void divideDuanWei(int num){
if(num>=0){
//分段分位,4个数为一个段,1个数占一个位
duantemp = num;
while(duantemp > 0 && duantemp/10000 >= 0){
duan[duannum] = duantemp%10000;
weitemp = duan[duannum];
while(weitemp>0 && weitemp/10 >= 0){
wei[duannum*4 + weinum] = weitemp%10;
weitemp /= 10;
weinum++;
}
weinum = 0;
duantemp /= 10000;
duannum++;
}
}
}
}
运行结果: