`
郑云飞
  • 浏览: 823314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

人民币大小写转换

阅读更多
package d;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
 * @author 郑云飞
 */
public class TestRMB
{
	private static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    private static String rmbString="";
    private static String rmb="";
	public static void main(String[] args) throws IOException
	{
		char ch;
		int index=0,k=0;
		char c;
		System.out.println("请输入你要转换的人民币数:");
	    rmb=br.readLine();
	    boolean flag=true;
	    /*****************处理全0和开头许多0的情况****************/
	  while(flag)
	  {
		  c=rmb.charAt(k);
		  if(c!='0')
		  {
			  flag=false;
		  }
		  else {
			 flag=true;
		}
		  k++;
		  if(k==rmb.length())
		  {
			  break;
		  }
	  }
	  /*****************处理全0和开头许多0的情况  END****************/
	  /*****************如果都是0的情况****************************/
	   if(flag==true)
	   {
		   System.out.println("零元");
		   System.exit(0);
		   
	   }
	   /*****************如果不是0的情况****************************/
	   else {while((ch=rmb.charAt(index))!=-1)
		{
			 rmbString+=turnRmb(ch, index);//显示大写字母
			//判断o出现的位置
			if(turnRmb(ch,index)!='零')
			{
			  rmbString+=addunit(index);//显示单位
			}
			index++;
			if(index==rmb.length())
			{
				break;
			}
		}
		rmbString=rmbString.replaceAll("零零", "零");
		rmbString=rmbString.replaceAll("零零零", "零");
		rmbString=rmbString.replaceAll("零零", "零");
		/******************处理多余的万字*************************/
		int count=0;
		int []a=new int[8];
		for(int i=0;i<rmbString.length();i++)
		{
			if(rmbString.charAt(i)=='万')
			{
				a[count]=i;
				count++;
			}
		}
		StringBuffer stringBuffer=new StringBuffer(rmbString);
		for(int i=0;i<count-1;i++)
		{
			stringBuffer.deleteCharAt(a[i]);
			stringBuffer.insert(0, '零');
		}
		if(stringBuffer.charAt(stringBuffer.length()-1)=='零')
		{
			stringBuffer.deleteCharAt(stringBuffer.length()-1);
		}
		/******************处理多余的万字  END*************************/
		/******************处理多余零*************************/
		boolean boo=true;
		while(boo)
		{
			int m=0;
			 if(stringBuffer.charAt(m)=='零')
			 {
				 stringBuffer.deleteCharAt(m);
			 }
			 else {
				boo=false;
			}
			 m++;
		}
		/******************处理多余的亿字*************************/
		int []b= new int[8];
		int con=0;
		for(int i=0;i<stringBuffer.length();i++)
		{
			if(stringBuffer.charAt(i)=='亿')
			{
				b[con]=i;
				con++;
			}
		}
		StringBuffer stringBuffer1=new StringBuffer(stringBuffer);
		for(int i=0;i<con-1;i++)
		{
			stringBuffer1.deleteCharAt(b[i]);
		}
		/******************处理多余的亿字  END*************************/
		/******************打印最终结果*************************/
		System.out.println("--------打印最终的结果---------");
		
		if(rmb.equals("0"))
		{
			stringBuffer1=new StringBuffer("零");
		}
		if(stringBuffer1.charAt(0)=='零')
		{
			stringBuffer1.deleteCharAt(0);
		}
		System.out.println(stringBuffer1+"元");
		
	}
		
	
	}
	/*************************添加单位*********************/
	private static String addunit(int index)
	{
		String ch=" ";
		switch(rmb.length()-1-index)
		{
		  case 0:ch=""; break;
		  case 1:ch="十"; break;
		  case 2:ch="百"; break;
		  case 3:ch="千"; break;
		  case 4:ch="万"; break;
		  case 5:ch="十万"; break;
		  case 6:ch="百万"; break;
		  case 7:ch="千万"; break;
		  case 8:ch="亿"; break;
		  case 9:ch="十亿"; break;
		  case 10:ch="百亿"; break;
		  case 11:ch="千亿"; break;
		  case 12:ch="兆"; break;
		  default:System.out.println("目前暂支持12位数字的转换");System.exit(0);
		}
		return ch;
	}
	/*************************大小写字母转换*********************/
	public static char turnRmb(char ch,int index)
	{
		switch(ch)
		{
			case '0':ch='零';break;
			case '1':ch='壹';break;
			case '2':ch='贰';break;
			case '3':ch='叁';break;
			case '4':ch='肆';break;
			case '5':ch='伍';break;
			case '6':ch='陆';break;
			case '7':ch='柒';break;
			case '8':ch='捌';break;
			case '9':ch='玖';break;
			default:System.out.println("类型输入有误");System.exit(0);
		}
		 return ch;
	}
}

 

import java.io.*;

class RMB 
{
	public static void main(String[] args) 
	{
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String[] unit = {"圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"};
			String[] zero = {"万", "亿"};

			System.out.println("请输入您要转换的数字:");
			String rmb = br.readLine();
			int num = Integer.parseInt(rmb);
			String res = "";
			while(rmb.charAt(0) == '0') {
				rmb = rmb.substring(1);
				if(rmb.length() == 0) {
					res = "零圆";
					break;
				}
			}
			if(!res.equals("零圆")) {
				for(int i=rmb.length()-1;i>-1;i--) {
					char ch = rmb.charAt(i); 
					if(ch == '0') {
						if(i < rmb.length() - 1) {
							if(rmb.charAt(i + 1) != '0') {
								res = getString(ch) + res;
							}
							if((rmb.length() - 1 - i) % 4 == 0) {
								res = zero[(rmb.length() - 1 - i) / 4 - 1] + res;
							}
						} else {
							res = unit[rmb.length() - 1 - i] + res;
						}
					} else {
						res = getString(ch) + unit[rmb.length() - 1 - i] + res;

					}
				}
			}
			System.out.println(res);
		} catch(IOException e) {
			e.printStackTrace();
		} catch(NumberFormatException e) {
			System.out.println("数字格式错误!");
		}
	}

	public static String getString(char ch) {
		switch(ch) {
			case '0': {
				return "零";
			} case '1': {
				return "壹";
			} case '2': {
				return "贰";
			} case '3': {
				return "叁";
			} case '4': {
				return "肆";
			} case '5': {
				return "伍";
			} case '6': {
				return "陆";
			} case '7': {
				return "柒";
			} case '8': {
				return "捌";
			} case '9': {
				return "玖";
			} default: {
				return "";
			}
		}
	}
}

 

import java.text.*;
import java.util.Scanner;

public class MoneyTest {

	public static String zhuanhuan(Object ob) {
		String s=new DecimalFormat("#.00").format(ob);
		s=s.replaceAll("\\.", "");//将字符串中的"."去掉
		char d[]={ '零', '一', '两', '三', '四', '五', '六', '七', '八', '九'}; 
		String unit="仟佰拾兆仟佰拾亿仟佰拾万仟佰拾元角分";
		int c=unit.length();
		StringBuffer sb=new StringBuffer(unit);
		for(int i=s.length()-1;i>=0;i--) {
			sb.insert(c-s.length()+i,d[s.charAt(i)-0x30]);
		}
		s=sb.substring(c-s.length(),c+s.length());
		s=s.replaceAll("零[仟佰拾]", "零").
		replaceAll("零{2,}", "零"). 
		replaceAll("零([兆万元?])", "$1"). 
		replaceAll("零[角分]", ""); 
		return s; 
	}

	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		System.out.println("请输入你要转换的金额:?");
		double number=s.nextDouble();
		String s1=zhuanhuan(new Double(number));
		System.out.println("转换成大写后的金额是:"+s1);
	}
}

 

分享到:
评论

相关推荐

    人民币大小写转换软件

    人民币大小写转换软件 转换标准的银行款项.

    VB.NET编写的人民币大小写转换工具

    VB.NET编写的人民币大小写转换工具,实现小写转大写,大写转小写。

    人民币大小写转换,完整带整和零

    在IT行业中,人民币大小写转换是一项常见的编程任务,特别是在财务软件或者银行系统开发中。它涉及到将数字金额从阿拉伯数字形式转换成汉字大写形式,以满足中国金融行业的规范要求,确保金额表述清晰且不易篡改。这...

    人民币大小写转换,整带整和零

    3. **零的处理**:在人民币大小写转换中,零的处理尤为重要。零在不同位置有不同的表示,如零元(零)、零角(零)、零分(零)、零拾(零)、零佰(零)、零仟(零)。在转换时,需要根据位置正确插入。 4. **小数...

    C# 人民币大小写转换

    针对“C# 人民币大小写转换”这一主题,我们需要探讨如何利用C#编程语言处理人民币金额的格式化,特别是将其从阿拉伯数字形式转换为中文大写,这在财务单据中是必不可少的,因为中文大写可以避免因数字混淆导致的...

    字母大小写转换工具和人民币大小写转换工具

    在IT领域,字母大小写转换和人民币大小写转换是两种常见的文本处理需求。这些工具主要用于提升数据处理的准确性和效率,特别是在编程、文档编辑、财务报告等场景中。 首先,我们来了解一下字母大小写转换。在计算机...

    jsp页面调用applet实现人民币的大小写转换.docx

    该实现方法通过在JSP页面中嵌入一个Applet,使用JavaScript与Applet进行交互,实现实时的人民币大小写转换。 一、JSP页面调用Applet的实现 在JSP页面中,使用 `;charset=gb2312" %&gt;` 指定页面的字符编码为GB2312,...

    实验一——人民币大小写转换

    ### 实验一——人民币大小写转换 #### 一、引言 本次实验的主题是对人民币数字进行大写转换的软件进行测试。此实验属于软件测试方法和技术课程的一部分,旨在通过实践来检验学生对于软件测试理论的理解与应用能力。...

    PowerBuilder人民币大小写转换

    ### PowerBuilder人民币大小写转换知识点解析 在PowerBuilder开发中,进行人民币金额的大小写转换是一种常见的需求。这种转换主要用于财务、会计等系统的输出显示,确保数据格式符合规范且易于理解。下面将详细介绍...

    vb 人民币大小写转换 代码

    在VB(Visual Basic)编程语言中,经常会有需求将数字转换为中文的人民币大写形式,以便于财务报告和会计处理。以下是一个VB程序的详细分析,它实现了将输入的数字(小写形式)转换为人民币大写的源代码。 首先,...

    C#实例:人民币大小写转换程序

    本实例关注的是一个具体的C#编程任务:实现人民币大小写的转换功能。在金融和会计领域,货币数值通常需要以规范的大写形式表示,以防止篡改和提高账目的准确性。以下是对这个实例的详细讲解: 首先,我们需要理解...

    人民币大小写转换并语音报数

    【标题】"人民币大小写转换并语音报数"是一个基于Delphi7开发的应用程序,它提供了将人民币金额数字形式转换成大写汉字的功能,并且具备语音播报的能力。这个项目可以帮助财务人员快速准确地处理金融文档,减少人为...

    java实现人民币大小写转换

    用java实现的将人民币从数字转换为大写

    人民币大小写转换类库

    在IT行业中,人民币大小写转换类库是一种非常实用的工具,尤其在财务软件或与金融相关的系统开发中。这类库通常包含一系列函数或方法,能够将数字金额转换为中文大写,符合中国财务法规的要求。以下是对这个主题的...

    人民币大小写转换文档及代码

    在IT行业中,人民币大小写转换是一项常见的需求,特别是在财务软件或者银行系统开发中。这个转换功能主要用于将数字化的人民币金额转换成中文大写的表述形式,以便于财务报表的规范和审计。C#作为.NET框架的主要编程...

Global site tag (gtag.js) - Google Analytics