Java任意人民币转换组合,人民币转换 - 我的Blog我做主^_^ - BlogJava

public class TranMoney {

public TranMoney() {

}

// public static void main(String ars[]){

//  System.out.println(getChnmoney("11000.01"));

//

// }

public static String getChnmoney(String strNum) {

int n, m, k, i, j, q, p, s = 0;

int length, subLength, pstn;

String change, output, subInput, input = strNum;

output = "";

if (strNum.equals(""))

return null;

else {

length = input.length();

pstn = input.indexOf('.'); // 小数点的位置

if (pstn == -1) {

subLength = length;// 获得小数点前的数字

subInput = input;

} else {

subLength = pstn;

subInput = input.substring(0, subLength);

}

char[] array = new char[4];

char[] array2 = { '仟', '佰', '拾' };

char[] array3 = { '亿', '万', '元', '角', '分' };

n = subLength / 4;// 以千为单位

m = subLength % 4;

if (m != 0) {

for (i = 0; i < (4 - m); i++) {

subInput = '0' + subInput;// 补充首位的零以便处理

}

n = n + 1;

}

k = n;

for (i = 0; i < n; i++) {

p = 0;

change = subInput.substring(4 * i, 4 * (i + 1));

array = change.toCharArray();// 转换成数组处理

for (j = 0; j < 4; j++) {

output += formatC(array[j]);// 转换成中文

if (j < 3) {

output += array2[j];// 补进单位,当为零是不补(千百十)

}

p++;

}

if (p != 0)

output += array3[3 - k];// 补进进制(亿万元分角)

// 把多余的零去掉

String[] str = { "零仟", "零佰", "零拾" };

for (s = 0; s < 3; s++) {

while (true) {

q = output.indexOf(str[s]);

if (q != -1)

output = output.substring(0, q) + "零"

+ output.substring(q + str[s].length());

else

break;

}

}

while (true) {

q = output.indexOf("零零");

if (q != -1)

output = output.substring(0, q) + "零"

+ output.substring(q + 2);

else

break;

}

String[] str1 = { "零亿", "零万", "零元" };

for (s = 0; s < 3; s++) {

while (true) {

q = output.indexOf(str1[s]);

if (q != -1)

output = output.substring(0, q)

+ output.substring(q + 1);

else

break;

}

}

k--;

}

if (pstn != -1)// 小数部分处理

{

for (i = 1; i < length - pstn; i++) {

if (input.charAt(pstn + i) != '0') {

output += formatC(input.charAt(pstn + i));

output += array3[2 + i];

} else if (i < 2)

output += "零";

else

output += "";

}

}

if (output.substring(0, 1).equals("零"))

output = output.substring(1);

if (output.substring(output.length() - 1, output.length()).equals(

"零"))

output = output.substring(0, output.length() - 1);

if(output.indexOf("分")>0||output.indexOf("角")>0){

return output;

}else{

return output += "整";

}

}

}

public static String get3Eng(String strNum) {

String strEng = "";

String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",

"SEVEN", "EIGHT", "NINE" };

String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",

"FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };

String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",

"SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };

int num = Integer.parseInt(strNum);

int b = num / 100;

int t = (num % 100) / 10;

int g = (num % 100) % 10;

if (b != 0) {

strEng = strEng + str[b] + " " + str2[9];

}

if (t == 0) {

if (g != 0) {

if (b != 0) {

strEng = strEng + " AND ";

}

strEng = strEng + str[g];

}

} else if (t == 1) {

if (b != 0) {

strEng = strEng + " AND ";

num = num % 100;

}

strEng = strEng + str1[num - 10];

} else if (t != 1) {

if (g != 0) {

if (b != 0) {

strEng = strEng + " AND ";

}

strEng = strEng + str2[t - 1] + "-" + str[g];

} else {

if (b != 0) {

strEng = strEng + " AND ";

}

strEng = strEng + str2[t - 1] + str[g];

}

}

return strEng;

}

public static String getCent(String strNum) {

String strEng = "";

String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",

"SEVEN", "EIGHT", "NINE" };

String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",

"FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };

String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",

"SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };

String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",

"", "", "MILLION", "", "", "BILLION", "", "" };

if (strNum.equals(""))

return null;

else {

int length = strNum.length();

if (length != 3) {

return "输入的位数错误!";

}

int cent = Integer.parseInt(strNum.substring(1, 3));

if (cent == 0) {

return strEng;

}

if (cent < 10) {

strEng = str3[0] + " " + strEng + str[cent];

} else if (cent >= 10 && cent <= 19) {

strEng = str3[0] + " " + strEng + str1[cent - 10];

} else if (cent > 19) {

int jiao = cent / 10;

int fen = cent % 10;

if (fen != 0) {

strEng = str3[0] + " " + strEng + str2[jiao - 1] + "-"

+ str[fen];

} else {

strEng = str3[0] + " " + strEng + str2[jiao - 1] + str[fen];

}

}

return strEng;

}

}

public static String getEngmoney(String strNum) {

String strNumber = "";

String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",

"", "", "MILLION", "", "", "BILLION", "", "" };

String strEng = "";

strNumber = strNum;

int pointbz = strNumber.indexOf(".");

if (pointbz < 0) {

strNumber = strNumber + ".00";

} else if (pointbz > 0) {

int k = strNum.length() - pointbz;

if (k == 2) {

strNumber = strNumber + "0";

} else if (k == 1) {

strNumber = strNumber + "00";

}

}

int length = strNumber.length();

if (length > 16) {

return "您输入的值过大系统无法处理!";

}

String strb = "";

String strm = "";

String strq = "";

String stry = "";

String strf = "";

// 得到分

if (length == 3) {

strf = getCent(strNumber);

strEng = strEng + strf;

} else if (length > 3 && length < 7) {

stry = get3Eng(strNumber.substring(0, length - 3));

strf = getCent(strNumber.substring(length - 3, length));

strEng = strEng + stry + " " + str3[2];

if (!strf.equals("")) {

strEng = strEng + " AND " + strf;

}

} else if (length > 6 && length < 10) {

strq = get3Eng(strNumber.substring(0, length - 6));

stry = get3Eng(strNumber.substring(length - 6, length - 3));

strf = getCent(strNumber.substring(length - 3, length));

strEng = strEng + strq + " " + str3[5];

if (stry.equals("")) {

strEng = strEng + " " + stry;

} else {

strEng = strEng + " " + stry + " " + str3[2];

}

if (!strf.equals("")) {

strEng = strEng + " AND " + strf;

}

} else if (length > 9 && length < 13) {

strm = get3Eng(strNumber.substring(0, length - 9));

strq = get3Eng(strNumber.substring(length - 9, length - 6));

stry = get3Eng(strNumber.substring(length - 6, length - 3));

strf = getCent(strNumber.substring(length - 3, length));

strEng = strEng + strm + " " + str3[8];

if (!strq.equals("")) {

strEng = strEng + " " + strq + " " + str3[5];

}

if (!stry.equals("")) {

strEng = strEng + " " + stry + " " + str3[2];

} else {

strEng = strEng + " " + str3[2];

}

if (!strf.equals("")) {

strEng = strEng + " AND " + strf;

}

} else if (length > 12 && length < 16) {

strb = get3Eng(strNumber.substring(0, length - 12));

strm = get3Eng(strNumber.substring(length - 12, length - 9));

strq = get3Eng(strNumber.substring(length - 9, length - 6));

stry = get3Eng(strNumber.substring(length - 6, length - 3));

strf = getCent(strNumber.substring(length - 3, length));

strEng = strEng + strb + " " + str3[11];

if (!strm.equals("")) {

strEng = strEng + " " + strm + " " + str3[8];

}

if (!strq.equals("")) {

strEng = strEng + " " + strq + " " + str3[5];

}

if (!stry.equals("")) {

strEng = strEng + " " + stry + " " + str3[2];

} else {

strEng = strEng + " " + str3[2];

}

if (!strf.equals("")) {

strEng = strEng + " AND " + strf;

}

}

return strEng + " ONLY";

}

public static String formatC(char x) {

String a = "";

switch (x) {

case '0':

a = "零";

break;

case '1':

a = "壹";

break;

case '2':

a = "贰";

break;

case '3':

a = "叁";

break;

case '4':

a = "肆";

break;

case '5':

a = "伍";

break;

case '6':

a = "陆";

break;

case '7':

a = "柒";

break;

case '8':

a = "捌";

break;

case '9':

a = "玖";

break;

}

return a;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值