JAVA人民币大写转换代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/**
* 功能:实现数字大写转换
*/
package Demo;

import java.util.Scanner;

public class Demo1 {

public static void main(String[] args) {

char[] hunit = { '拾', '佰', '仟' };
char[] vunit = { '万', '亿' };
char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };

Scanner sca = new Scanner(System.in);
System.out.println("请输入要转换为大写的数字:");
double num = sca.nextDouble();//输入一个值

long num_long = (long) (num * 100);
String num_String = String.valueOf(num_long);

String head = "0";// 整数部分
String end = String.valueOf(num_long);// 小数部分

if (num_long < 10) {
end = "0" + String.valueOf(num_long);
}

String suffix = "";// 小数部分转换的结果
if (num_String.length() > 2) {
suffix = "圆";
head = num_String.substring(0, num_String.length() - 2);
end = num_String.substring(num_String.length() - 2);
}

if (end.equals("00")) {
suffix = "圆整";
} else {
if (end.charAt(0) != '0') {
suffix += digit[end.charAt(0) - '0'] + "角";
}
if (end.charAt(1) != '0') {
suffix += digit[end.charAt(1) - '0'] + "分";
}
}

String prefix = "";// 整数部分转换的结果
char[] chDig = head.toCharArray();
boolean preZero = true;
int hang = 0;
int lie = 0;
int len = chDig.length;
if (len % 4 != 0) {
hang = len / 4;
lie = len % 4 - 2;
} else {
hang = len / 4 - 1;
lie = 2;
}
for (int i = 0; i < len - 1; i++) {// 整数部分除了最后一位的所有数
if (chDig[i] == '0' && chDig[i + 1] == '0') {
preZero = false;
} else if (chDig[i] == '0' && chDig[i + 1] != '0') {
preZero = true;
}
if (preZero) {
prefix += String.valueOf(digit[chDig[i] - '0']);
if (lie >= 0 && chDig[i] != '0') {
prefix += String.valueOf(hunit[lie]);
}
}
if (hang > 0 && lie == -1) {
prefix += String.valueOf(vunit[hang - 1]);
hang--;
}
lie--;
if (lie == -2) {
lie = 2;
}
}

if (chDig[len - 1] != '0') {// 整数部分最后一位数
prefix += String.valueOf(digit[chDig[len - 1] - '0']);
}

System.out.println(prefix + suffix);
}
}

相关文档
最新文档