练习要求:
如:
2135元 要求转换为 ------> 零佰零拾ni零万贰仟壹佰叁拾伍元
代码:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
//键盘输入金额 并判断数据是否有效
Scanner sc = new Scanner(System.in);
int money;
while (true) {
System.out.println("请输入一个金额(单位元):");
money = sc.nextInt();
if (money >= 0 && money <= 9999999) {
break;
} else {
System.out.println("输入有误 请重新输入");
}
}
System.out.println(money);
//定义一个字符串 用于拼接
String MoneyS = "";
//得到数值 然后调用getMoney方法 变成大写
// 得到 money中每一位数字
while (true) {
//从左往右获取数据
int ge = money % 10;
//调用方法 返回大写
String number = getMoney(ge);
//将转换后的大写拼接到字符串中
MoneyS = number + MoneyS; //这里必须是number + Money 不然拼接的顺序会颠倒
//去掉数据
money = money / 10;
//如果将每一位都获取到了 money记录的将为0 则将结束循环
if (money == 0) {
break;
}
}
//在前面补零 补齐七位
int count = 7 - MoneyS.length();
for (int i = 0; i < count; i++) {
MoneyS = "零" + MoneyS;
}
//插入单位 定义一个数组表示单位
String[] dw_arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
//遍历MoneyS 然后将数组插入字符串
//定义一个字符串 将最终结果拼接
String result = "";
for (int i = 0; i < MoneyS.length(); i++) {
char c = MoneyS.charAt(i);
//将大写数字和单位拼接到result中
result = result + c + dw_arr[i];
}
//打印输出
System.out.println(result);
}
//使用查表法 将数字变成大写的中文
public static String getMoney(int number) {
//定义数组 跟数字产生对应关系
String[] arr = {"零", " 壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
//通过索引来返回结果
return arr[number];
}
执行效果: