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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 暗夜精灵 初级黑马   /  2016-9-22 15:51  /  894 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位大神能用代码实现汉字转数字.
例如:四万四千三百二十一
转换后是: 44321;
如果是 switch case;那就最好了,在这谢谢了

10 个回复

倒序浏览
没空帮,帮顶~
回复 使用道具 举报

也是可以的大兄弟
回复 使用道具 举报
这个有个范例。希望有用,你看看http://www.iteye.com/topic/276033
回复 使用道具 举报
好厉害啊!
回复 使用道具 举报
383412263 发表于 2016-9-22 17:09
这个有个范例。希望有用,你看看http://www.iteye.com/topic/276033

这个有点复杂,搞个switch case就能匹配的就好了.
这是点招题哦
回复 使用道具 举报
public class Test_10汉字转数字 { public static void main(String[] args) {         String s="一万三千四百零六";         char[] ch=s.toCharArray();         StringBuffer sb=new StringBuffer();         for (int i = 0; i <ch.length; i++) {                                    switch(ch[i]){                 case '一':                    sb.append(1);                         break;                         case '二':                            sb.append(2);                                 break;                         case '三':                                    sb.append(3);                                         break;                         case '四':                                    sb.append(4);                                         break;                         case '五':                                    sb.append(5);                                         break;                         case '六':                                    sb.append(6);                                         break;                         case '七':                                    sb.append(7);                                         break;                         case '八':                                    sb.append(8);                                         break;                         case '九':                                    sb.append(9);                                         break;                         case '零':                                    sb.append(0);                                         break;                                         default:                                                 break;                 }         }         System.out.println(sb); } }
回复 使用道具 举报
暗夜精灵 发表于 2016-9-22 18:53
这个有点复杂,搞个switch case就能匹配的就好了.
这是点招题哦

public class Test_10汉字转数字 {
public static void main(String[] args) {
        String s="一万三千四百零六";
        char[] ch=s.toCharArray();
        StringBuffer sb=new StringBuffer();
        for (int i = 0; i <ch.length; i++) {
                  
                switch(ch){
                case '一':
                   sb.append(1);
                        break;
                        case '二':
                           sb.append(2);
                                break;
                        case '三':
                                   sb.append(3);
                                        break;
                        case '四':
                                   sb.append(4);
                                        break;
                        case '五':
                                   sb.append(5);
                                        break;
                        case '六':
                                   sb.append(6);
                                        break;
                        case '七':
                                   sb.append(7);
                                        break;
                        case '八':
                                   sb.append(8);
                                        break;
                        case '九':
                                   sb.append(9);
                                        break;
                        case '零':
                                   sb.append(0);
                                        break;
                                        default:
                                                break;
                }
        }
        System.out.println(sb);
}
}
//刚刚搞定了
回复 使用道具 举报
暗夜精灵 发表于 2016-9-22 19:17
public class Test_10汉字转数字 { public static void main(String[] args) {         String s="一万三千四百零 ...

也是可以的啊 大兄弟,跟我想的一样呢
回复 使用道具 举报
可以的哈,简单粗暴
回复 使用道具 举报
public class Demo4 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println(method(sc.nextInt()));
        }

        public static String method(int num) {
                String s = String.valueOf(num);
                HashMap<Character, String> hs = new HashMap<>();
                hs.put('0', "零");
                hs.put('1', "一");
                hs.put('2', "二");
                hs.put('3', "三");
                hs.put('4', "四");
                hs.put('5', "五");
                hs.put('6', "六");
                hs.put('7', "七");
                hs.put('8', "八");
                hs.put('9', "九");
                HashMap<Integer, String> h2 = new HashMap<>();
                h2.put(1, "");
                h2.put(2, "十");
                h2.put(3, "百");
                h2.put(4, "千");
                h2.put(5, "万");
                h2.put(6, "十万");
                h2.put(7, "百万");
                h2.put(8, "千万");
                h2.put(9, "亿");
               
                StringBuffer sb = new StringBuffer();
                for (int i = s.length() - 1; i >= 0; i--) {
                        sb.append(h2.get(s.length() - i));
                        sb.append(hs.get(s.charAt(i)));
                }
               
                sb.reverse();
                return sb.toString();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马