金额转换
要求:
把输入的金额转换成票据上的大写格式并要求有单位, 运用字符串的知识完成。
步骤:
例如:
- 2456 (先转成大写)
- 贰肆伍陆 (在前面补3个零, 零加上金额后一共7位)
- 零零零贰肆伍陆 ( 加上单位)
- 零佰零拾零万贰仟肆佰伍拾陆元
java代码示例:
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("金额无效");
}
}
String strMoney = ""; //用来链接数字
//获取整数里的每一位
while (true) {
//从右往左获取每个单位的数字
int ge = money % 10; //获得当前最低位的数字
money = money / 10; //除去已获得的数字
strMoney = getCapitalNumber(ge) + strMoney; //链接数字 因为从右往左获取每个单位的数字,所以要新获得的数字+strMoney
if (money == 0) { //当money = 0 时,每个单位的数字已全部获取
break; //结束循环
}
}
int count = 7 - strMoney.length();
for (int i = 0; i < count; i++) {
strMoney = "零" + strMoney; //在数字前补充零
}
String result = "";
//插入单位
for (int i = 0; i < strMoney.length(); i++) {
char c = strMoney.charAt(i); //通过循环遍历获取字符串里每一个字符
result = result + c + getUnitNumber(i); //字符与单位拼接
}
System.out.println(result);
}
//通过输入的金额,拆分每位的数字充当索引获取大写
//获取大写
public static String getCapitalNumber(int number) {
String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
return arr[number];
}
//获取单位
public static String getUnitNumber(int number) {
String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
return arr[number];
}
}