1.题目-金额转换
2.代码
import java.util.Scanner;
public class StringDemo8 {
public static void main(String[] args) {
//1.键盘录入一个金额
Scanner sc = new Scanner(System.in);
int money = 0;
while (true) {
System.out.println("请输入一个金额");
money = sc.nextInt();
if (money >= 0 && money <= 9999999) {
break;
} else {
System.out.println("金额无效");
}
}
//System.out.println(money);该行是用来检验第一个步骤的正确性的
//2.获取money的每一位
//定义一个变量用来表示钱的大写
String moneyStr = "";//不知道赋什么值,就空
while (true) {
//从右往左获取数据,因为右侧是数据的个位
int ge = money % 10;
String captialNumber = getCaptialNumber(ge);
//把转换之后的大写,拼接到moneyStr
//倒着取值,正着拼接
moneyStr = captialNumber + moneyStr;
money = money / 10;
if (money == 0) {
break;
}
}
//System.out.println(moneyStr);该句是用来验证步骤2的正确性的
//3、用“零”补齐7位
int count = 7 - moneyStr.length();
for (int i = 0; i < count; i++) {
moneyStr = "零" + moneyStr;
}
//System.out.println(moneyStr);该句是用来验证步骤3的正确性的
//4、插入单位
//定义一个数组表示单位
String[] str = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
String result = "";//用result拼接c 和 str[i]
for (int i = 0; i < moneyStr.length(); i++) {
char c = moneyStr.charAt(i);
// System.out.print(c);
// System.out.print(str[i]);
result = result + c + str[i];
}
System.out.println(result);
}
//定义一个方法,让数字和大写数字产生一一对应的关系
public static String getCaptialNumber(int number) {
//定义数组,一一对应 1---壹
String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
//返回结果
return arr[number];
}
}
3.步骤详解
(1)步骤1:保证金额的有效性+从键盘输入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个金额");
String money = sc.nextInt();
(2)步骤2:获取money每一位,% 和 /搭配使用
int ge = money % 10; money = money / 10;
定义一个 空字符串来表示钱的大写,且倒着取数,正着拼
String moneyStr = "";//不知道赋什么值,就空着 int ge = money % 10; String captialNumber = getCaptialNumber(ge); moneyStr = captialNumber + moneyStr;
(3)步骤3:补齐“零”
定义一个计零器,最开始count=7,money的长度为moneyStr.length()
所以需要补齐的零的个数为count=7-moneyStr.length();
(4)步骤4:插入单位
定义一个数组表示单位:
String[] str = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
for (int i = 0; i < moneyStr.length(); i++) { char c = moneyStr.charAt(i); //System.out.print(c); //System.out.print(str[i]); result = result + c + str[i]; }
首先通过索引 i 将大写的数字依次取出来,同时通过 i 将单位也依次取出来,直接用result将二者进行拼接(result拼接c 和 str[i]),最后在循环外进行打印。
(5)定义getCaptialNumber()方法
目的:让数字和大写数字产生一一对应的关系
String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; return arr[number];