java 代码人民币大写转阿拉伯数字
时间: 2023-11-09 10:07:48 浏览: 121
JAVA大写金额转化为小写金额
3星 · 编辑精心推荐
好的,以下是 Java 代码,可以将人民币大写转换为阿拉伯数字:
```java
import java.util.HashMap;
import java.util.Map;
public class RMBConverter {
private static final Map<String, Integer> RMB_NUM_MAP = new HashMap<>();
static {
RMB_NUM_MAP.put("零", 0);
RMB_NUM_MAP.put("壹", 1);
RMB_NUM_MAP.put("贰", 2);
RMB_NUM_MAP.put("叁", 3);
RMB_NUM_MAP.put("肆", 4);
RMB_NUM_MAP.put("伍", 5);
RMB_NUM_MAP.put("陆", 6);
RMB_NUM_MAP.put("柒", 7);
RMB_NUM_MAP.put("捌", 8);
RMB_NUM_MAP.put("玖", 9);
}
private static final Map<String, Integer> RMB_UNIT_MAP = new HashMap<>();
static {
RMB_UNIT_MAP.put("元", 1);
RMB_UNIT_MAP.put("拾", 10);
RMB_UNIT_MAP.put("佰", 100);
RMB_UNIT_MAP.put("仟", 1000);
RMB_UNIT_MAP.put("万", 10000);
RMB_UNIT_MAP.put("亿", 100000000);
}
public static double convert(String rmb) {
double result = 0;
String[] units = rmb.split("元");
String[] digits = units[0].split("");
int prevUnit = 0;
int currUnit = 0;
for (int i = digits.length - 1; i >= 0; i--) {
int digit = RMB_NUM_MAP.get(digits[i]);
currUnit = RMB_UNIT_MAP.get(units[0].charAt(i) + "");
if (currUnit < prevUnit) {
result += digit * currUnit;
} else {
result += digit * currUnit;
prevUnit = currUnit;
}
}
if (units.length > 1) {
String decimals = units[1].substring(0, units[1].length() - 1);
result += Double.valueOf(decimals) / 100;
}
return result;
}
public static void main(String[] args) {
String rmb = "壹仟陆佰捌拾元零捌分";
double result = convert(rmb);
System.out.println(rmb + " = " + result);
}
}
```
你可以将人民币大写字符串传递给 `convert` 方法,它将返回相应的阿拉伯数字。在上面的示例中,我将字符串 "壹仟陆佰捌拾元零捌分" 传递给 `convert` 方法,并将其打印为 "16680.08"。
阅读全文