该练习是在《 Java开发实例大全 基础卷.pdf》中看到的题目,就借着代码参考实现。
实现思路:
- 保存要转换的金钱单位(chineseUnit)和金钱大写字符串(chineseValue)
- 将输入金额转换为字符串
- 将输入的金钱分为整数部分和小数部分进行处理。
- 对整数部分进行转换
- 对小数部分进行转换
- 拼接整数和小数部分的字符串数值
- 返回并输出
代码如下:
import org.omg.PortableInterceptor.Interceptor;
import java.math.BigDecimal;
import java.util.Scanner;
public class NumberConvert {
public static void main(String[] args) {
boolean flag = true;
Scanner sc = new Scanner(System.in);
ConvertChinese convertChinese = new ConvertChinese();
System.out.println("输入金额:");
BigDecimal number=sc.nextBigDecimal();
System.out.println(convertChinese.getChinese(number) + "整");
}
}
class ConvertChinese{
private String chinese = "";
private String decimalsChinese="";
private String intNumber ="";
private String decimals = "";
String chineseUnit = "元=十=百=千=万=十=百=千=亿=十=百=千=万";
String chineseValue = "零壹贰叁肆伍陆柒捌玖";
// 实现金钱的数值转换
public String getChinese(BigDecimal number) {
String srcNumber = number + "";// 把数值换为String 型
// 分开整数与小数
if(srcNumber.contains(".")){
intNumber = srcNumber.substring(0, srcNumber.indexOf("."));
decimals = srcNumber.substring(srcNumber.indexOf(".") + 1, srcNumber.length());
System.out.println("整数部分:" + intNumber);
System.out.println("小数部分:" + decimals);
}else{
intNumber=srcNumber;
}
String chineseUnit1[] = chineseUnit.split("=");
// 转换整数部分
for (int i = 0; i < intNumber.length(); i++) {
chinese += chineseValue.charAt(Integer.parseInt(srcNumber.charAt(i) + ""))
+ chineseUnit1[intNumber.length() - 1 - i];
}
// 转换小数部分
for (int i = 0; i < decimals.length(); i++) {
if(i==0){
decimalsChinese += chineseValue.charAt(Integer.parseInt(decimals.substring(0, 1))) + "角";
}
if(i==1){
decimalsChinese+=chineseValue.charAt(Integer.parseInt(decimals.substring(1,2)))+"分";
}
if(i==2){
decimalsChinese+=chineseValue.charAt(Integer.parseInt(decimals.substring(2,3)))+"厘";
}
}
chinese += decimalsChinese;
return chinese;
}
}
测试效果如下:
输入金额:
55.333
整数部分:55
小数部分:333
伍十伍元叁角叁分叁厘整