B05数字转为汉子

发布时间 2023-03-22 21:12:58作者: 缕一缕清风

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class A05数字转为汉子 {
// 请编写一个程序将一个整数转换为汉子读法字符串.比如"1123"转化为"一千一百二十三"
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.close();
char[] cc = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };// 数字映
char[] dw = { '十', '百', '千', '万' };// 单位数组
String str = String.valueOf(a);// 把用户输入的数字变为字符串
ArrayList list = new ArrayList<>();// 创建一个动态的数组
int x;
for (int i = 0; i < str.length(); i++) {
x = str.charAt(i) - '0';
list.add(cc[x]);// 将字符串中的内容送进了动态数组
}
Collections.reverse(list);// 反转动态数组
System.out.println(list);
int len = list.size();// 确定数据的长度
ArrayList list2 = new ArrayList<>();// 创建新的动态数组
for (int i = 0; i < len - 1; i++) {//关键的编程技巧
list2.add(list.get(i));//添加一个数字汉子
list2.add(dw[i]);//添加一个单位
}
list2.add(list.get(len - 1)); //添加一个数字汉子
System.out.println(list2);
Collections.reverse(list2);
System.out.println(list2);
StringBuilder sb = new StringBuilder(); //字符串组装者
for (int i = 0; i < list2.size(); i++) {
sb.append(list2.get(i)); //把动态数组中的内容拼装到字符串中去
}
System.out.println(sb);
}
}