将一个键盘输入的数字转化成中文输出,用java语言实现,,请编一段程序实现!

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 134 收藏 0 点赞 0 评论 0

将一个键盘输入的数字转化成中文输出
(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)
用java语言实现,,请编一段程序实现!
1.    public class Reader {
2.      private String strNum;
3.
4.      private String strNumChFormat;
5.
6.      private String strNumTemp;
7.
8.      private int intNumLen;
9.
10.      private String strBegin;
11.
12.      public Reader(String strNum) {
13.        this.strNum = strNum;
14.      }
15.
16.      public boolean check(String strNum) {
17.        boolean valid = false;
18.        if (strNum.substring(0, 1).equals(“0”)) {
19.          this.strNum = strNum.substring(1);
20.        }
21.        try {
22.          new Double(strNum);
23.          valid = true;
24.        } catch (NumberFormatException ex) {
25.          System.out.println(“Bad number format!”);
26.        }
27.        return valid;
28.      }
29.
30.      public void init() {
31.        strNumChFormat = “”;
32.        intNumLen = strNum.length();
33.        strNumTemp = strNum;
34.        strNumTemp = strNumTemp.replace(‘1’, ‘一’);
35.        strNumTemp = strNumTemp.replace(‘2’, ‘二’);
36.        strNumTemp = strNumTemp.replace(‘3’, ‘三’);
37.        strNumTemp = strNumTemp.replace(‘4’, ‘四’);
38.        strNumTemp = strNumTemp.replace(‘5’, ‘五’);
39.        strNumTemp = strNumTemp.replace(‘6’, ‘六’);
40.        strNumTemp = strNumTemp.replace(‘7’, ‘七’);
41.        strNumTemp = strNumTemp.replace(‘8’, ‘八’);
42.        strNumTemp = strNumTemp.replace(‘9’, ‘九’);
43.        strNumTemp = strNumTemp.replace(‘0’, ‘零’);
44.        strNumTemp = strNumTemp.replace(‘.’, ‘点’);
45.        strBegin = strNumTemp.substring(0, 1);
46.      }
47.
48.      public String readNum() {
49.        if (check(strNum)) {
50.          init();
51.          try {
52.            for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {
53.              if (strNumTemp.charAt(intNumLen – 1) == ‘零’ && i == 1) {
54.                strNumChFormat = “位”;
55.              } else if (strNumTemp.charAt(intNumLen – i) == ‘零’ && j == 1) {
56.                strNumChFormat = “位” + strNumChFormat;
57.              } else if (strNumTemp.charAt(intNumLen – i) == ‘点’) {
58.                j = 1;
59.                k = 1;
60.                strNumChFormat = strNumTemp.charAt(intNumLen – i) + strNumChFormat;
61.                continue;
62.              } else {
63.                strNumChFormat = strNumTemp.charAt(intNumLen – i) + strNumChFormat;
64.              }
65.              if (strNumTemp.charAt(intNumLen – i – 1) != ‘位’ && strNumTemp.charAt(intNumLen – i – 1) != ‘零’) {
66.                if (j == 1 && i < intNumLen) {
67.                  strNumChFormat = ‘拾’ + strNumChFormat;
68.                } else if (j == 2 && i < intNumLen) {
69.                  strNumChFormat = ‘百’ + strNumChFormat;
70.                } else if (j == 3 && i < intNumLen) {
71.                  strNumChFormat = ‘千’ + strNumChFormat;
72.                }
73.              }
74.              if (j == 4 && i < intNumLen) {
75.                j = 0;
76.              }
77.              if (k == 4 && i < intNumLen) {
78.                strNumChFormat = ‘万’ + strNumChFormat;
79.              } else if (k == 8 && i < intNumLen) {
80.                k = 0;
81.                strNumChFormat = ‘亿’ + strNumChFormat;
82.              }
83.              j++;
84.              k++;
85.            }
86.            while (strNumChFormat.indexOf(“位”) != -1) {
87.              strNumChFormat = strNumChFormat.replaceAll(“位”, ” “);
88.            }
89.            if (strNumChFormat.substring(0, 2) == “一拾”) {
90.              strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
91.            }
92.            if (strNumChFormat.indexOf(“点”) >= 0) {
93.              String rebegin = strNumChFormat.substring(0, strNumChFormat.indexOf(“点”));
94.              String relast = strNumChFormat.substring(strNumChFormat.indexOf(“点”), strNumChFormat.length());
95.              for (int i = 1; i <= relast.length(); i++) {
96.                relast = relast.replaceAll(“拾”, “”);
97.                relast = relast.replaceAll(“百”, “”);
98.                relast = relast.replaceAll(“千”, “”);
99.                relast = relast.replaceAll(“万”, “”);
100.                relast = relast.replaceAll(“亿”, “”);
101.              }
102.              strNumChFormat = rebegin + relast;
103.            }
104.          } catch (ArrayIndexOutOfBoundsException ex) {
105.            ex.printStackTrace();
106.          } catch (Exception ex) {
107.            ex.printStackTrace();
108.          }
109.          int off = strNumChFormat.indexOf(“点”);
110.          strNumChFormat = strBegin + strNumChFormat.substring(0);
111.        } else {
112.          strNumChFormat = “”;
113.        }
114.        return strNumChFormat;
115.      }
116.
117.      public static void main(String args[]) {
118.        try {
119.          String number = args[0].toString();
120.          System.out.println(“The number is: ” + number);
121.          Reader reader = new Reader(number);
122.          System.out.println(“Output String: ” + reader.readNum());
123.        } catch (Exception ex) {
124.          System.out.println(“Please input like that: javac Reader <number>”);
125.        }
126.      }
127.    }

评论列表
文章目录