黑马程序员技术交流社区

标题: 汉字转数字 [打印本页]

作者: 暗夜精灵    时间: 2016-9-22 15:51
标题: 汉字转数字
哪位大神能用代码实现汉字转数字.
例如:四万四千三百二十一
转换后是: 44321;
如果是 switch case;那就最好了,在这谢谢了
作者: cjhhao1    时间: 2016-9-22 16:03
没空帮,帮顶~
作者: 暗夜精灵    时间: 2016-9-22 17:02
cjhhao1 发表于 2016-9-22 16:03
没空帮,帮顶~

也是可以的大兄弟
作者: 383412263    时间: 2016-9-22 17:09
这个有个范例。希望有用,你看看http://www.iteye.com/topic/276033
作者: 爱你一万年    时间: 2016-9-22 18:38
好厉害啊!
作者: 暗夜精灵    时间: 2016-9-22 18:53
383412263 发表于 2016-9-22 17:09
这个有个范例。希望有用,你看看http://www.iteye.com/topic/276033

这个有点复杂,搞个switch case就能匹配的就好了.
这是点招题哦
作者: 暗夜精灵    时间: 2016-9-22 19:17
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 19:18
暗夜精灵 发表于 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-23 07:54
暗夜精灵 发表于 2016-9-22 19:17
public class Test_10汉字转数字 { public static void main(String[] args) {         String s="一万三千四百零 ...

也是可以的啊 大兄弟,跟我想的一样呢
作者: minhang0902    时间: 2016-9-23 12:24
可以的哈,简单粗暴
作者: czw0916    时间: 2016-9-23 12:30
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();
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2