输入数字输出汉字读法
(参考:http://tieba.baidu.com/p/4101663044)
例如,输入7865,输出:七千八百六十五
解决一:
(事先定义一个装有“个十百千万”,一个装有“零一二三四五.....”的数组或者集合A和B,首先获取用户输入数字的长度,然后获得各个位,每个位数就是B的下标,然后长度就是A的下标减一,比如: 485 4对应B[4]为“四”,A[2]为百 8对应B[8]为八,A[1]为十 。)
public class Test {
public static void main(String[] args) throws IOException {
String [] A={"","十","百","千","万"};
String [] B={"零","一","二","三","四","五","六","七","八","九"};
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String inputString = buffer.readLine();
//String inputString ="4859";
StringBuilder result= new StringBuilder();
int intNum= Integer.parseInt(inputString);
int len = inputString.length();
for(int i=0;i<len;i++) {
int yu = intNum%10;
result.insert(0, A[i]);
result.insert(0, B[yu]);
intNum/=10;
}
System.out.println(result.toString());
}
}
解决二:
(定好模板:x万x千x百x十x,逐个提取阿拉伯数字,自右向左替换模板的x,当然阿拉伯数字还是要映射成中文,最后把替换后的模板由左数起至最后一个x的下一位截掉,剩下的就是结果)
public class Test {
public static void main(String[] args) throws IOException {
String template= "x万x千x百x十x";
char[] ch=template.toCharArray();
char [] B={'零','一','二','三','四','五','六','七','八','九'};
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String inputString = buffer.readLine();
//String inputString ="4859";
int intNum= Integer.parseInt(inputString);
int len = inputString.length();
for(int i=0;i<len;i++) {
int yu = intNum%10;
int index= template.lastIndexOf("x");
ch[index]=B[yu];
intNum/=10;
template=String.valueOf(ch);
}
int index= template.lastIndexOf("x");
System.out.println(template.substring(index+2));
}
}