人民币大小写转换

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);
	}
}

 

你可能感兴趣的:(C++,c,C#)