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);
}
}
}
}
JAVA浮点数转中文金额
最新推荐文章于 2022-01-20 09:28:10 发布