package com.itheima;
/*
* 10、 金额转换,阿拉伯数字转换成中国传统形式。
例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
*/
public class Test10 {
/*
* 思路: 1.将输入的long型变量lon转化成字符串
* 2.根据字符串长度生成相应的子字符串,9-13位分成三个子字符串,分别代表 亿级、万级、个级
* 5-8位分成二个子字符串,分别代表 万级、个级,1-4位用原字符串
* 3.定义方法,将子字符串传承int型数组
* 4.定义方法,利用查表法,根据规则读int数组
*/
public static void main(String[] args) {
convert(9805300187023L);// 99009-0009-9901
}
static void convert(long lon)//本方法只考虑万亿以内的,即输入数字最多为13位
{
if(lon>9999999999999L) //超出范围则抛出异常
throw new RuntimeException("输入数字超出范围");
String str=lon+"";
// 根据字符串长度生成相应的子字符串,9-13位分成三个子字符串,分别代表 亿级、万级、个级
// 5-8位分成二个子字符串,分别代表 万级、个级,1-4位用原字符串
if(str.length()>8){
String s1=str.substring(str.length()-4, str.length());
String s2=str.substring(str.length()-8, str.length()-4);
String s3=str.substring(0, str.length()-8);
int[] arr1=toIntArr(s1);//调用方法将子字符串传承int型数组
int[] arr2=toIntArr(s2);
int[] arr3=toIntArr(s3);
StringBuilder sb=new StringBuilder();
if(s2.equals("0000"))
sb.append(toString(arr3)+"亿"+"零"+toString(arr1)+"圆整");
else
sb.append(toString(arr3)+"亿"+toString(arr2)+"万"+toString(arr1)+"圆整");
System.out.println(sb);
}else if((str.length()>4)&&(str.length()<=8)){
String s1=str.substring(str.length()-4, str.length());
String s2=str.substring(0, str.length()-4);
int[] arr1=toIntArr(s1);
int[] arr2=toIntArr(s2);
StringBuilder sb=new StringBuilder();
sb.append(toString(arr2)+"万"+toString(arr1)+"圆整");
System.out.println(sb);
}else{
String s1=str;
int[] arr1=toIntArr(s1);
StringBuilder sb=new StringBuilder();
sb.append(toString(arr1)+"圆整");
System.out.println(sb);
}
}
// 定义方法,将子字符串传承int型数组
static int[] toIntArr(String s){
int [] arr=new int[s.length()];
for(int x=0;x<arr.length;x++){
arr[x]=Integer.parseInt(s.charAt(x)+"");
}
return arr;
}
// 定义方法,利用查表法,根据规则读int数组
//根据读数字的规则,各种判断
static String toString(int []arr){
char[] num={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖',};
char[] mul={'拾','佰','仟','万','亿'};
StringBuilder builder=new StringBuilder();
for(int i=arr.length-1;i>-1;i--){
if(i==arr.length-1){
if(arr[arr.length-1]!=0)
builder.append(""+num[arr[arr.length-1]]);
}else if(i<arr.length-1){
if(arr[i]!=0)
builder.append(mul[arr.length-2-i]+""+num[arr[i]]);
if((arr[i]==0)&&(arr[i+1]!=0))
builder.append("零");
}
}
return new String(builder.reverse());
}
}
|
|