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