JAVA浮点数转中文金额

来源:互联网 发布:python 使用多个def的 编辑:程序博客网 时间:2024/06/03 22:49
import java.text.DecimalFormat;class Translate{     //字符串转化    public Translate(String temp){        String f=this.spilt(temp);        System.out.println("转化后为:"+f);    }    private String numFormat(int flag,String s) {        String a1[]= {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};        String a2[]= {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"};        String a3[]= {"分","角"};        String temp="";        for(int i=0;i<s.length();i++) {            if(flag==1) {                if(s.length()>13) {                    System.out.println("输入数据过大!(数值不可超过亿万!)");                    return "";                }                temp=temp+a1[s.charAt(i)-'0']+a2[s.length()-i-1];            }else if(flag==2) {                temp=temp+a1[s.charAt(i)-'0']+a3[s.length()-i-1];            }        }        return temp;    }    //检查数据合法性    private boolean checkNum(String s) {        try {            float f=Float.valueOf(s);            if(f<0) {                System.out.println("非法数据,请检查");                return false;            }else {                return true;            }        }catch(Exception e) {            System.out.println("非法数据,请检查");            return false;        }    }    //检测并拆分数据    private String spilt(String s) {        if(checkNum(s)) {            String temp[]=s.split("\\.");            if(temp.length==2) {                String intOnly=temp[0];                String part1=this.numFormat(1, intOnly);                String smallOnly=temp[1];                Double smallTemp=Double.parseDouble("0."+smallOnly);                DecimalFormat df=new DecimalFormat("#.00");                String small=df.format(smallTemp).substring(1);                int temp1=Integer.parseInt(small);                String part2=this.numFormat(2, temp1+"");                return cleanZero(part1+part2);            }else if(temp.length==1){                String intOnly=temp[0];                String part1=this.numFormat(1,intOnly);                return cleanZero(part1);            }else {                return "";            }        }else {            return "";        }           }    //清除多余的零    private String cleanZero(String s) {        //去除字符串前多余零        while(s.charAt(0)=='零') {            //去除开头零            s=s.substring(1);            if(s.length()==1) {                return "零";            }        }        String regex1[]= {"零仟","零佰","零拾"};        String regex2[]= {"零亿","零万","零元"};        String regex3[]= {"亿","万","元"};        String regex4[]= {"零角","零分"};        for(int i=0;i<3;i++) {            s=s.replaceAll(regex1[i], "零");        }        for(int i=0;i<3;i++) {            s.replaceAll("零零零", "零");            s.replaceAll("零零", "零");            s=s.replaceAll(regex2[i], regex3[i]);        }        for(int i=0;i<2;i++) {            s=s.replaceAll(regex4[i], "");        }        //万到亿全是零,只保留亿        s=s.replaceAll("亿万", "亿");        return s;    }}public class test{    public static void main(String args[]) {        menu();    }    public static void menu() {        while(true) {            System.out.println("1.数字转中文金额");            System.out.println("2.退出");            System.out.println("请输入:");            java.util.Scanner sc=new java.util.Scanner(System.in);            int caseNum=sc.nextInt();            sc.nextLine();            switch(caseNum) {            case 1:                 System.out.println("请输入要转化的数值:");                String temp=sc.next();                new Translate(temp);                break;            case 2:                System.out.println("正在退出!");                sc.close();                System.exit(0);            }        }    }}
原创粉丝点击