A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李勇   /  2012-7-16 18:07  /  3458 人查看  /  20 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class test {
    public static void main(String[] arg) {
        String d="拾佰仟万拾佰仟亿拾佰仟万";
        String s="零壹贰叁肆伍陆柒捌玖";
        boolean zero=false, fu=false;
        long value;
        int count=0;
        String Cvalue="";
        Scanner r=new Scanner(System.in);
        while(!r.hasNextInt()) {
            System.out.println("Must a integer can be inputted!");
            r.next();
        }
        value=r.nextInt();
        if(value==0) {//如果为零,直接输出
            Cvalue="零";
            System.out.println(Cvalue);
            return;
        }
        else if(value<0) {//做负数标记,以便以后统一处理
            value=java.lang.Math.abs(value);
            fu=true;
        }
        while(value>0) {
            int b=(int)(value % 10);
            if(!zero || b!=0) {//不是连续零,就需要转换数据
                String t="";
                if(b!=0) {//非零的正常情况
                    t=s.substring(b,b+1);
                    if(count>0) t+=d.substring(count-1,count);
                    zero=false;
                }
                else if(count!=4 && count!=8){//零的情况,且不是万和亿位,应该写零
                    t="零";
                    zero=true;
                }
                Cvalue=t+Cvalue;
            }
            if(count==4 && !Cvalue.contains("万")) Cvalue="万"+Cvalue;//在第万位,添加万
            if(count==8 && !Cvalue.contains("亿")) Cvalue="亿"+Cvalue;//在第亿位,添加亿
            count++;
            value/=10;
        }
        Cvalue=Cvalue.replaceFirst("亿万","亿");//排除亿万连接
        Cvalue=Cvalue.replaceFirst("零亿","亿");//排除零亿连接
        Cvalue=Cvalue.replaceFirst("零万","万");//排除零万连接
        if(Cvalue.endsWith("零")) Cvalue=Cvalue.substring(0,Cvalue.length()-1);//去除尾零
        if(fu) Cvalue="负的"+Cvalue;//添加负标记
        System.out.println(Cvalue);
    }
}
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马