前言: 首先,lz是一个java爱好者,目前运用java编写性能测试工具和脚本,所以大神们有更好的答案请灌水!
题目:输入1-9999数字,输出对应汉字,如1001 输出 一千零一
public static void main(String[] args) {
//数字输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-9999之间的数字:");
int count = sc.nextInt();
System.out.println("输入的数字是:"+count);
//数据对应库
String[] uint = {"千","百","十"};
String[] hcount = {"一","二","三","四","五","六","七","八","九","零"};
StringBuilder sb = new StringBuilder();
//数字对应方法
/****
* 取千位数字i/1000%10
* 取百位数字i/100%10
* 取十位数字i/10%10
* 取个位数字i%10
* ***/
//输出千位
if(count/1000%10!=0) {
//System.out.println(hcount[count/1000%10-1]+uint[0]);
sb.append(hcount[count/1000%10-1]+uint[0]);
}
//输出百位
if(count/100%10!=0) {
//System.out.println(hcount[count/100%10-1]+uint[1]);
sb.append(hcount[count/100%10-1]+uint[1]);
}else {
if(sb.length()!=0&&(count/10%10!=0||count%10!=0)) {
sb.append(hcount[9]);
}
}
//输出十位
if(count/10%10!=0) {
//System.out.println(hcount[count/10%10-1]+uint[2]);
sb.append(hcount[count/10%10-1]+uint[2]);
}else {
if(sb.length()!=0&&count%10!=0) {
System.out.println(sb.charAt(sb.length()-1));
if(sb.indexOf("零")!=sb.length()-1) {//防止出现9001 输出九千零零一的双零情况
sb.append(hcount[9]);
}
}
}
//输出个位
if(count%10!=0) {
//System.out.println(hcount[count%10-1]);
sb.append(hcount[count%10-1]);
}else {
//个位是0并且千百十无数字
if(sb.length()==0) {
sb.append(hcount[9]);
}
}
//输出
System.out.println(sb.toString());
}