您的位置:首页 > 职场人生

来个面试题:将1002格式转成一千零二

2013-11-21 11:25 169 查看
直接扔代码……

package test;

public class Test {
public String num;
private String[] units = {"","万","亿"};
private String[] units2 = {"","十","百","千"};
private String[] cWords = {"零","一","二","三","四","五","六","七","八","九"};
private String resultS;

public void show(){
System.out.println("转换前的形式为:");
System.out.println(num);
System.out.println("转换后的形式为:");
System.out.println(resultS);
}
public void modeChange(){
StringBuffer sb = new StringBuffer();
try{
double tempN = Double.parseDouble(num);
while(num.startsWith("0")){
num = num.substring(1);
}
}catch(Exception e){
resultS = num+"不是合法金额,请重新输入。";
return;
}
String[] numA;
if(num.contains(".")){
numA = num.split("\\.");
}else{
numA = new String[]{num,""};
}
char[] headA = numA[0].toCharArray();
for(int i=headA.length-1,j=0;i>-1;i--,j++){
if(j%4==0){
sb.insert(0, units[j/4]);
}else{
if(headA[i]!='0'){
sb.insert(0, units2[j%4]);
}
}
sb.insert(0, cWords[Integer.parseInt(""+headA[i])]);
}

resultS = sb.toString();
//替换"零零*"的情况
resultS = resultS.replaceAll("零{2,}+", "零");
//最后一位是0的话,去除
if(resultS.lastIndexOf("零")==resultS.length()-1){
resultS = resultS.substring(0,resultS.length()-1);
}
if(resultS.length()==0){
resultS = "零";
}
resultS += "元";
try{
resultS += cWords[Integer.parseInt(""+numA[1].charAt(0))]+"角";
resultS += cWords[Integer.parseInt(""+numA[1].charAt(1))]+"分";
}catch(Exception e){

}
}
public static void main(String[] args){
Test mC = new Test();
mC.num="000100780615";
mC.modeChange();
mC.show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: