⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 金额转换.java

📁 一些经典的java程序适合初学者.rar
💻 JAVA
字号:
//说明:如果输入一个不带小数点的整数,则输出***元整;输入小数则换成角分
///但此程序有限制如果输入带小数点的金额,必须是两位以上小数,
///并且金额不能超过一万亿,有兴趣可以自己改进
class ReadString
{
	String str;//传入的字符串
	String decimalFraction;//小数部分
	String integerStr;//整数部分
    String arr[];//整数部分,分解后给数组
    Boolean FractionID;//检查是否有小数部分
    String result;//转换的结果
	ReadString(String a) 
	{
	str=a.toString();	//传进所要读的数
	}
	public void parse()//分解字符串
	{
	 int i=str.trim().indexOf(".");
	 if(str.indexOf(".")!=-1)//判断有否小数点
	 {
	 decimalFraction=str.substring(i+1,i+3);//将字符串分成小数部分与整数部分
	 integerStr=str.substring(0,i);
	 FractionID=true;
	 }
	 else
	 {integerStr=str;
	 FractionID=false;
	 }
	 int k=integerStr.length()/4;
	 this.arr=new String[k+1]; 
	 i=0;
	 int m=integerStr.length();
	 while(i<=k)//将整数部分分解赋给数组
	 {if(i==k) //没办法,数组越界,要分开讨论
	 {	
	    this.arr[i]=integerStr.substring(m-((i+1)*4-1)-1+(k+1)*4-m,m-((i+1)*4-4));
	 	}
	 	else if(i==0)
	 	this.arr[i]=integerStr.substring(m-((i+1)*4-1)-1);//为了清楚一点,我不化简了
	 	 else
	    this.arr[i]=integerStr.substring(m-((i+1)*4-1)-1,m-((i+1)*4-4));	
	    i++;
	 }	
	}
	public char change(String a)//将阿拉伯数字转成中文
	{char b=a.charAt(0);
	char c='0';
	switch(b)
	{
	 case '1':c='一';break;
	 case '2':c='二';break;
	 case '3':c='三';break;
	 case '4':c='四';break;
	 case '5':c='五';break;
	 case '6':c='六';break;
	 case '7':c='七';break;
	 case '8':c='八';break;
	 case '9':c='九';break;
	 case '0':c='零';break;
	}	
	return c;
	}
	public String stream(String a)//将数组arr的每个字符串传成中文
	{ String m=new String();
		if(a.length()==1)
		{char[] k={change(a)};m=new String(k);
		   }
		   else if(a.length()==2)
		   {
		   	char a1=change(a.substring(0,1));
		   	char a2='十';
		   	char a3=change(a.substring(1));
		   	if(a3=='零')//如果个位是零,不用读出来
		   	{char[] k={a1,a2};m=new String(k);}
		   	else
		   	{char[] k={a1,a2,a3};m=new String(k);}
		   }
		   else if(a.length()==3)
		   {
		   	char a1=change(a.substring(0,1));//百
		   	char a2='百';
		   	char a3=change(a.substring(1,2));//十
		   	char a4='十';
		   	char a5=change(a.substring(2));//个
		   	if(a5=='零'&&a3=='零')//百位肯定不为零,不用讨论
		   {char[] k={a1,a2};m=new String(k);}
		   	else if(a3=='零'&&a5!='零')
		   {char[] k={a1,a2,a3,a5};m=new String(k);}
		   	else if(a3!=0&&a5==0)
		   {char[] k={a1,a2,a3,a4};m=new String(k);}
		   	else if(a3!=0&&a5!=0)
		{char[] k={a1,a2,a3,a4,a5};m=new String(k);}
		   }
		   else if(a.length()==4)//四位
		   {
		   	char a1=change(a.substring(0,1));
		   	char a2='千';
		   	char a3=change(a.substring(1,2));
		   	char a4='百';
		   	char a5=change(a.substring(2,3));
		   	char a6='十';
		   	char a7=change(a.substring(3));
		   	if(a1=='零'&&a3!='零'&&a5!='零'&&a7!='零')//千位为零
		   	{char[] k={a1,a3,a4,a5,a6,a7};m=new String(k);}
		   	else if(a1=='零'&&a3=='零'&&a5!='零'&&a7!='零')
		   	 {char[] k={a1,a5,a6,a7};m=new String(k);}
		   	else if(a1=='零'&&a3=='零'&&a5=='零'&&a7!='零')
		   	  {char[] k={a1,a7};m=new String(k);}
		   	else if(a1=='零'&&a3=='零'&&a5=='零'&&a7=='零')
		   	   {m=new String("");}
		 	//
		 	else if(a1=='零'&&a3!='零'&&a5=='零'&&a7=='零')
		   	   {char[] k={a1,a3,a4};m=new String(k);}
		   	else if(a1=='零'&&a3!='零'&&a5!='零'&&a7=='零')
		   	    {char[] k={a1,a3,a4,a5,a6};m=new String(k);}
		   	else if(a1=='零'&&a3!='零'&&a5=='零'&&a7!='零')
		   	    {char[] k={a1,a3,a4,a5,a7};m=new String(k);}
		   	else if(a1=='零'&&a3!='零'&&a5!='零'&&a7!='零')
		   	   {char[] k={a1,a3,a4,a5,a6,a7};m=new String(k);}
		   //
		   	else if(a1!='零'&&a3=='零'&&a5!='零'&&a7!='零')//千位不为零
		   	    {char[] k={a1,a2,a3,a5,a6,a7};m=new String(k);}
		   	else if(a1!='零'&&a3=='零'&&a5=='零'&&a7!='零')
		   	    {char[] k={a1,a2,a3,a7};m=new String(k);}
		   	else if(a1!='零'&&a3=='零'&&a5!='零'&&a7=='零')
		   	    {char[] k={a1,a2,a3,a5,a6};m=new String(k);}
		   	else if(a1!='零'&&a3=='零'&&a5=='零'&&a7=='零')
		   	   {char[] k={a1,a2};m=new String(k);}
		   	//
		   	else if(a1!='零'&&a3!='零'&&a5=='零'&&a7=='零')
		   	 {char[] k={a1,a2,a3,a4};m=new String(k);}
		   	else if(a1!='零'&&a3!='零'&&a5!='零'&&a7=='零')
		  {char[] k={a1,a2,a3,a4,a5,a6};m=new String(k);}
		   	else if(a1!='零'&&a3!='零'&&a5=='零'&&a7!='零')
		   	   {char[] k={a1,a2,a3,a4,a5,a7};m=new String(k);}
		   	else if(a1!='零'&&a3!='零'&&a5!='零'&&a7!='零')
		   	   {char[] k={a1,a2,a3,a4,a5,a6,a7};m=new String(k);}		  
		   }
		   return m;
	}
	public void join()//将最后结果拼在一起
	{
		String integerRead=new String();
		this.parse();
		int i;
		if(this.arr.length-1>2)
		{
			System.out.println("金额超过界限!");
			}
		else
		{ 	   String fractionRead=new String();
		   for(i=this.arr.length-1;i>=0;i--)
		   {
		   	integerRead=integerRead.concat(stream(this.arr[i]));
		   	if(i==2)
		   	integerRead=integerRead.concat("亿");
		   	else if(i==1)
		   	integerRead=integerRead.concat("万");
		   	else if(i==0&&this.FractionID==false)
		   	integerRead=integerRead.concat("元整");
		   	else 
		   	integerRead=integerRead.concat("元");
		   }		
		   //加小数部分
		   if(FractionID==true)
		   {
		   char a1=change(decimalFraction.substring(0,1));
		   char a2='角';
		   char a3=change(decimalFraction.substring(1));
		   char a4='分';
		   if(a3=='零')
		   {char[] a={a1,a2};
		   fractionRead=new String(a);
		   }
		   {char[] a={a1,a2,a3,a4};
		   fractionRead=new String(a);
		   }
		   this.result=integerRead.concat(fractionRead);
		   }
		   else
		   this.result=integerRead;
			}
	}
	public void read() //输出结果
	{
		join();
		System.out.println(str);
		System.out.println("金额:"+this.result);
	}
}
class StringTest
{
	public static void main(String[] args)
	{
		ReadString str=new ReadString("11023.98");
	     str.read();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -