下面这段代码method方法参数不能带0,带0输出就乱了,求高手解决呀!0怎么处理呀!没分了
public class Convert {
public void method(String num){
String[] arrUnit = {"元","十","百","千","万"}; // 计量单位
String[] arrNum = {"零","一","二","三","四","五","六","七","八","九"}; //大写数字
String[] strNum = num.split("|");
int nNumCount = strNum.length - 2;
// String newStr = "";
for(int i=0; i<strNum.length; i++){
if(strNum[i] != null && !"".equals(strNum[i])){
int n = Integer.parseInt(strNum[i]);
switch(n){
case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
}
}
}
}
public static void main(String args[])
{
new Convert().method("1111");
}
}逻辑
public class Convert {
public void method(String num){
String[] arrUnit = {"元","十","百","千","万"}; // 计量单位
String[] arrNum = {"零","一","二","三","四","五","六","七","八","九"}; //大写数字
String[] strNum = num.split("|");
int nNumCount = strNum.length - 2;
// String newStr = "";
for(int i=0; i<strNum.length; i++){
if(strNum[i] != null && !"".equals(strNum[i])){
int n = Integer.parseInt(strNum[i]);
switch(n){
case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
}
}
}
}
public static void main(String args[])
{
new Convert().method("1111");
}
}逻辑
//System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]);
nNumCount--;
System.out.print(arrNum[n]);
break;
这业务挺复杂的,用现成的吧import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;public class MoneyToChinese { private static String[] digit = { "", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", "亿", "拾亿", "佰亿", "仟亿", "万亿" }; private static final String FEN = "分"; private static final String JIAO = "角"; private static final String YUAN = "圆"; private static final String ZHENG = "整"; public static void main(String[] args) { System.out.println(getMoneyString(1004));
} /**www.2cto.com
* 取得数字对应的中文
*
* @param money
* @return
*/
public static String getMoneyString(double money) {
// 将字符串转为为BigDecimal格式
BigDecimal b = new BigDecimal(String.valueOf(money));
// 设置精度为2,小数点后2位
String strMoney = "" + b.setScale(2, BigDecimal.ROUND_UNNECESSARY);
// 按小数点分为 整数 和 小数 两部分
String[] amt = strMoney.split("\\.");
// 调用函数获取 元 和 小数 部分的字符串
strMoney = getYuan(amt[0]) + YUAN + getJIAOFEN(amt[1]);
// 返回最终得到的字符串
return strMoney;
} /**
* 得到元的部分
*
* @param s
* @return
*/
public static String getYuan(String s) {
char[] c = s.toCharArray();
StringBuffer chSb = new StringBuffer();
int len = c.length;
List<String> list = new ArrayList<String>();
String d = "";
for (int i = 0; i < c.length; i++) {
// 如果有几个0挨在一起时, 只显示一个零即可
if (i > 0 && c[i] == '0' && c[i] == c[i - 1]) {
--len;
continue;
}
// 得到数字对应的中文
chSb.append(getChinese(c[i])); // 非零时, 显示是几佰, 还是几仟
if (!getChinese(c[i]).equals("零")) {
d = digit[--len];
list.add(d);// 当数字中有万和十万时, 要去掉十万
chSb.append(d);
} else {
--len; // 如果是0则不取位数
}
}
String chStr = chSb.toString();
// 如果同时包含有万和十万, 则将十万中的万去掉
if (list.contains("万") && list.contains("拾万")) {
chStr = chStr.replaceAll("拾万", "拾");
}
if (list.contains("万") && list.contains("佰万")) {
chStr = chStr.replaceAll("佰万", "佰");
}
if (list.contains("万") && list.contains("仟万")) {
chStr = chStr.replaceAll("仟万", "仟");
}
// 如果同时包含亿和十亿, 则将十亿中的亿字去掉
if (list.contains("亿") && list.contains("拾亿")) {
chStr = chStr.replaceAll("拾亿", "拾");
}
if (list.contains("亿") && list.contains("佰亿")) {
chStr = chStr.replaceAll("佰亿", "佰");
}
if (list.contains("亿") && list.contains("仟亿")) {
chStr = chStr.replaceAll("仟亿", "仟");
}
if (list.contains("亿") && list.contains("万亿")) {
chStr = chStr.replaceAll("万亿", "万");
}
// 如果最后一位是 0, 则去掉
if ((chSb.charAt(chSb.length() - 1)) == '零') {
chStr = chStr.substring(0, chStr.length() - 1);
}
return chStr;
} /**
* 分角转换为字符串
* 例: 25 2角5分
* 02 零2分
* 50 5角
* 00 整
* 0 整
* 2 整
* @param FENJIAO
* @return
*/
private static String getJIAOFEN(String FENJIAO) {
// 分角字符串转为为字符数组
char[] ch = FENJIAO.toCharArray();
// 按长度为0,为1,为2 来区分。
if (ch.length == 0) {
return ZHENG;
} else if (ch.length == 1) {
if (ch[0] == '0') {
return ZHENG;
} else {
return getChinese(ch[0]) + JIAO;
}
} else {
if (ch[0] == '0' && ch[1] == '0') {
return ZHENG;
} else if (ch[0] == '0' && ch[1] != '0') {
return getChinese(ch[0]) + getChinese(ch[1]) + FEN;
} else if (ch[0] != '0' && ch[1] == '0') {
return getChinese(ch[0]) + JIAO;
} else {
return getChinese(ch[0]) + JIAO + getChinese(ch[1]) + FEN;
}
}
} /**
* 取得数字对应的中文
* @param i
* @return
*/
private static String getChinese(char i) {
String ch = "";
switch (i) {
case '0':
ch = "零";
break;
case '1':
ch = "壹";
break;
case '2':
ch = "贰";
break;
case '3':
ch = "叁";
break;
case '4':
ch = "肆";
break;
case '5':
ch = "伍";
break;
case '6':
ch = "陆";
break;
case '7':
ch = "柒";
break;
case '8':
ch = "捌";
break;
case '9':
ch = "玖";
break;
}
return ch;
}}
public void method(String num){ String[] arrUnit = {"元","十","百","千","万"}; // 计量单位
String[] arrNum = {"零","一","二","三","四","五","六","七","八","九"}; //大写数字
num = String.valueOf(Integer.parseInt(num));
String[] strNum = num.split("|");
int nNumCount = strNum.length - 2;
// String newStr = "";
for(int i=0; i<strNum.length; i++){
if(strNum[i] != null && !"".equals(strNum[i])){
int n = Integer.parseInt(strNum[i]);
switch(n){
case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
}
}
}
}
public static void main(String args[])
{
new Convert().method("0001111");
}
}
把你的程序稍微修改了下,不过结果倒是可以满足public void method(String num) { String[] arrUnit = { "元", "十", "百", "千", "万" }; // 计量单位
String[] arrNum = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; // 大写数字
String[] strNum = num.split("|");
int nNumCount = strNum.length - 2;
//System.out.println("nNumCount:" + nNumCount);
StringBuilder newStr = new StringBuilder();
for (int i = 0; i < strNum.length; i++) {
if (strNum[i] != null && !"".equals(strNum[i])) {
int n = Integer.parseInt(strNum[i]);
//System.out.println("nNumCount:" + nNumCount + "n:" + n);
switch (n) {
case 0:
if (!num.matches("[1-9]\\d*0$") || i != strNum.length -1) {
newStr.append(arrNum[n]);
}
if (i == (strNum.length-1)) {
newStr.append(arrUnit[nNumCount]);
}
nNumCount--;
break;
case 1:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 2:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 3:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 4:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 5:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 6:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 7:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 8:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
case 9:
newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
break;
}
}
}
String result = newStr.toString().replaceAll("零{2,3}", "零").replaceAll("零元", "元");
System.out.println(result);
}