| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1470 人关注过本帖
标题:中文数字转换笔试题
只看楼主 加入收藏
西鄙人
Rank: 2
等 级:论坛游民
帖 子:36
专家分:12
注 册:2009-12-2
结帖率:100%
收藏
 问题点数:0 回复次数:6 
中文数字转换笔试题
原题:把一个六位一下的阿拉伯数字转换成中文数字,阿拉伯数字不包含小数

这个题以前自己也做过,费了九牛二虎的力气才做出来。这次打算凭记忆再写一遍,后来发现可能有更好的方法。作出题后,自己内心中一点点丑陋的小得意又冒出头来,为此自己还检讨了一下,就打算作罢了。
    这样就能约束自己吗,很显然是不能,要突破。所以写出来,作为自己学习java编程的小小花絮的记忆。
    (上面几句纯属自嘲,请勿拍砖)
import java.util.Scanner;

public class NumberConvert {
    private static String[] zh = new String[] { "零", "壹", "贰", "叁", "肆", "伍",
            "陆", "柒", "捌", "玖" };
    private static String[] loc = new String[] { "", "十", "百", "仟", "万", "十",
            "百", "仟" };

    public static void main(String[] args) {
        int num = getNumber();
        if(num==-1){
            
            return ;
        }
        String result = convert(num);
        System.out.println(result);
    }

    private static String convert(int num) {
        if (num == 0) {
            return "零";
        }
        String result = new String();
        boolean flag = false;
        for (int i = String.valueOf(num).length(); i > 0; i--) {
            int temp = (int) (num / (Math.pow(10, i - 1)) % 10);
            if (temp == 0) {
                flag = true;
                continue;
            } else {
                if (flag) {
                    result += "零";
                    flag = false;
                }
                result += zh[temp];
                result += loc[i - 1];
            }
        }
        return result;
    }

    private static int getNumber() {
        Scanner sc = new Scanner(System.in);
        for (;;) {
            String str = sc.next();
            if (str.matches("^\\d+$")) {
                return Integer.parseInt(str);
            } else {
                if ("exit".equals(str)) {
                    return -1;
                }
                System.out.println("用户输入不合规则,请重新输入:");
                continue;
            }
        }
    }

}
搜索更多相关主题的帖子: 笔试 数字 中文 
2010-11-22 22:48
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
这么好的帖,为什么没有人顶?
顶上去

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-11-24 15:02
syg5434
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:山沟沟
等 级:版主
威 望:10
帖 子:285
专家分:781
注 册:2010-2-28
收藏
得分:0 
不过,继续努力!

不要迷恋哥,嫂子会揍你。阿-弥-陀-佛--!
2010-11-24 16:57
虾B写
Rank: 8Rank: 8
来 自:湖北
等 级:蝙蝠侠
威 望:3
帖 子:395
专家分:922
注 册:2009-10-1
收藏
得分:0 
程序代码:
import java.util.regex.*;

public class StringRegex{
  
//这个方法是把数字转换成人民币大写。可带小数
    public String getr(double n){
        String s=String.valueOf((int)n); //提取整数

        int m1=(int)((n-(int) n)*1000);
        int m2=((int)((n-(int) n)*100)) * 10;
        if(m1>m2){m1+=1;}   //如果小数有误差,改正(如。1.3是1.299999998)
        String m=String.valueOf(m1/10); //提取小数。

        String q[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        String w[]={"","拾","佰","仟"};
        String d[]={"分","角"};

        String s1="";
        for(int i=0,ii=s.length()-1;i<s.length();i++,ii--){
            s1+=q[Integer.parseInt(s.substring(i,i+1))];
            if(Integer.parseInt(s.substring(i,i+1))!=0){s1+=w[ii%4];}
            if(ii==8){s1+="亿";}
            if(ii==4){s1+="万";}

        }
        s1+="元";
        s1=("[零]{2,}").matcher(s1).replaceAll("零");
        s1=("[零]{1}([亿万元]{1})").matcher(s1).replaceAll("$1");

        String s0="";
        if(m1>0){

            for(int i=m.length()-1,o=0;i>=0;i--,o++){
                s0=q[Integer.parseInt(m.substring(i,i+1))]+d[o]+s0;
            }
            s0=("零分").matcher(s0).replaceAll("");
            if(m1<100){s0="零"+s0;}
        }
        return s1+s0;

    } 


}



楼主的语文比我还差,十?拾

[ 本帖最后由 虾B写 于 2010-11-24 19:55 编辑 ]

白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
2010-11-24 19:44
虾B写
Rank: 8Rank: 8
来 自:湖北
等 级:蝙蝠侠
威 望:3
帖 子:395
专家分:922
注 册:2009-10-1
收藏
得分:0 
getr是StringRegex类的一个方法,还有判断是否是数字,是否是日期,加密之类的。功能分开能反复调用。

白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
2010-11-24 19:48
思忆季节
Rank: 2
来 自:珠海
等 级:论坛游民
帖 子:42
专家分:62
注 册:2010-5-12
收藏
得分:0 
看了受益啊,顶上去
2010-12-02 13:49
李炎
Rank: 1
来 自:四川成都
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-12-2
收藏
得分:0 
我是来观望的,现在还不晓得主攻哪方面嘞。

编程菜鸟一个。
2010-12-02 20:35
快速回复:中文数字转换笔试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022188 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved