来看题:

要将输入的数字(大于零并小于七位)转成如图格式金额
示例输入:
12345
示例输出:
零佰零拾壹万贰千叁佰肆拾伍
题解:
0-9对应的数字可以利用数组下标轻松转换为汉字,因此我们可以先将12345转为壹贰叁肆伍,然后再在前面补零补足7位:
零零壹贰叁肆伍
最后插入单位即可。
首先定义两个数组,一个用来存储汉字单位,一个用来存储汉字进位单位:
java
private static final String []yuan = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static final String []wei = {"佰","拾","万","千","佰","拾","元"};
然后做输入数字处理:
java
int money = 0;
while(true) {
System.out.println("请输入金额:");
money = sc.nextInt();
if (money > 0 && money < 10000000) {
break;
} else {
System.out.println("输入错误");
}
接下来我们可以先将数字转为汉字表示,这里因为频繁使用字符串拼接,因此创建StringBuilder:
java
StringBuilder result = new StringBuilder();
while(money > 0) {
int temp = money % 10;
result.insert(0, change(temp));
money /= 10;
}
change代码如下:
java
public static String change(int num) {
return yuan[num];
}
然后补足7位,可以先计算长度看看需要补几个零,然后用StringBuilder提供的insert方法可以轻松在头部插入:
java
int count = 7 - result.length();
for (int i = 0; i < count; i++) {
result.insert(0, "零");
}
System.out.println(result);
最后我们插入单位,定义两个下标i和j,j表示插入位置,i表示要插入的单位的数组下标。注意j隔一位插入即可:
java
// 插入单位
int j = 1;
int f = 0;
while(j < result.length() && f < wei.length){
result.insert(j, wei[f]);
j += 2; // 这里注意j要隔一位进行插入
f++;
}
System.out.println(result);
完整代码:
java
package mylearn;
import java.util.*;
public class Test {
private static final Scanner sc = new Scanner(System.in);
private static final String []yuan = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static final String []wei = {"佰","拾","万","千","佰","拾","元"};
public static void main(String[] args) {
// 指针
int money = 0;
while(true) {
System.out.println("请输入金额:");
money = sc.nextInt();
if (money > 0 && money < 100000000) {
break;
} else {
System.out.println("输入错误");
}
}
StringBuilder result = new StringBuilder();
while(money > 0) {
int temp = money % 10;
result.insert(0, change(temp));
money /= 10;
}
int count = 7 - result.length();
for (int i = 0; i < count; i++) {
result.insert(0, "零");
}
System.out.println(result);
// 插入单位
int j = 1;
int f = 0;
while(j < result.length() && f < wei.length){
result.insert(j, wei[f]);
j += 2;
f++;
}
System.out.println(result);
}
public static String change(int num) {
return yuan[num];
}
}
end