package CompileProject;
/*28.将一个键盘输入的数字转化成中文输出 (例如:输入:1234567  输出:一百二拾三万四千五百六拾七)。
*/import java.util.Scanner;

public class P28 {
      private String strNum;
        private String strNumChFormat;
        private String strNumTemp;
        private int intNumLen;
        private String strBegin;
        public P28(String strNum) {
            this.strNum = strNum;
        }
        /**
         *
         * 方法描述:判断输入数据的格式
         * @param strNum
         * @return
         */
        public boolean check(String strNum) {
            boolean valid = false;
            //去掉数字前面的0
            if (strNum.substring(0,1).equals("0")){
                this.strNum = strNum.substring(1);
            }
            try {
                new Double(strNum);
                valid = true;
            }
            catch (NumberFormatException ex) {
                //输入非数字报异常
                System.out.println("Bad number format!");
            }
            return valid;
        }
        public void init() {
            strNumChFormat = "";
            intNumLen = strNum.length();
            strNumTemp = strNum;
            strNumTemp = strNumTemp.replace('1', '一');
            strNumTemp = strNumTemp.replace('2', '二');
            strNumTemp = strNumTemp.replace('3', '三');
            strNumTemp = strNumTemp.replace('4', '四');
            strNumTemp = strNumTemp.replace('5', '五');
            strNumTemp = strNumTemp.replace('6', '六');
            strNumTemp = strNumTemp.replace('7', '七');
            strNumTemp = strNumTemp.replace('8', '八');
            strNumTemp = strNumTemp.replace('9', '九');
            strNumTemp = strNumTemp.replace('0', '零');
            strNumTemp = strNumTemp.replace('.', '点');
            strBegin = strNumTemp.substring(0, 1);
        }
        public String readNum() {
            if (check(strNum)) {
                init();
                try {
                    for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {
                        if (strNumTemp.charAt(intNumLen - 1) == '零' && i == 1) {
                            strNumChFormat = "位";
                        }
                        else if (strNumTemp.charAt(intNumLen - i) == '零' && j == 1) {
                            strNumChFormat = "位" + strNumChFormat;
                        }
                        else if (strNumTemp.charAt(intNumLen - i) == '点') {
                            j = 1;
                            k = 1;
                            strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
                            continue;
                       }
                       else {
                           strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
                        }
              if (strNumTemp.charAt(intNumLen - i - 1) != '位' &&
                  strNumTemp.charAt(intNumLen - i - 1) != '零') {
                if (j == 1 && i < intNumLen) {
                  strNumChFormat = '拾' + strNumChFormat;
                }
                else if (j == 2 && i < intNumLen) {
                  strNumChFormat = '百' + strNumChFormat;
                }
                else if (j == 3 && i < intNumLen) {
                  strNumChFormat = '千' + strNumChFormat;
                }
              }
              if (j == 4 && i < intNumLen) {
                j = 0;
              }
              if (k == 4 && i < intNumLen) {
                strNumChFormat = '万' + strNumChFormat;
              }
              else if (k == 8 && i < intNumLen) {
                k = 0;
                strNumChFormat = '亿' + strNumChFormat;
              }
              j++;
              k++;
            }
            while (strNumChFormat.indexOf("位") != -1) {
              strNumChFormat = strNumChFormat.replaceAll("位", " ");
            }
            if (strNumChFormat.substring(0, 2) == "一拾") {
              strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
            }
            if (strNumChFormat.indexOf("点") >= 0) {
              String rebegin = strNumChFormat.substring(0,
                  strNumChFormat.indexOf("点"));
              String relast = strNumChFormat.substring(strNumChFormat.indexOf("点"),
                  strNumChFormat.length());
              for (int i = 1; i <= relast.length(); i++) {
                relast = relast.replaceAll("拾", "");
                relast = relast.replaceAll("百", "");
                relast = relast.replaceAll("千", "");
                relast = relast.replaceAll("万", "");
                relast = relast.replaceAll("亿", "");
              }
              strNumChFormat = rebegin + relast;
            }
          }
          catch (ArrayIndexOutOfBoundsException ex) {
            ex.printStackTrace();
          }
          catch (Exception ex) {
            ex.printStackTrace();
          }
          int off = strNumChFormat.indexOf("点");
          strNumChFormat = strBegin + strNumChFormat.substring(0);
        }
        else {
          strNumChFormat = "";
        }
        return strNumChFormat;
      }
      public static void main(String args[]) {
        while(true){
            try {//console输入
       
            Scanner sc = new Scanner(System.in);
            String number = sc.nextLine();
            //cofiguration输入
            //String number = args[0].toString();
          System.out.println("The number is: " + number);
          P28 P28 = new P28(number);
          System.out.println("Output String: " + P28.readNum());
        }
        catch (Exception ex) {
          System.out.println("Please input like that: javac P28 <number>");

}
        }
      }
}

将一个键盘输入的数字转化成中文输出相关推荐

  1. java电话键盘字母数字转换_用Java语言将一个键盘输入的数字转化成中文输出

    用Java语言将一个键盘输入的数字转化成中文输出 将一个键盘输入的数字转化成中文输出(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)用java语言实现,,请编一段... 将一个键盘输入 ...

  2. 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)?

    public static String getNumberByChinese(String param) {StringBuffer sb = new StringBuffer();char[] a ...

  3. java输入数字输出汉语_java实现将一个键盘输入的阿拉伯数字转化成中文输出

    (例如:输入:1234567     输出:一百二拾三万四千五百六拾七) 用java语言实现,,请编一段程序实现! public class Reader { private String strNu ...

  4. java数字转中文_Java程序:输入数字转换成中文输出

    功能看似简单,但真正实现起来也不是易事 现在贴出代码,欢迎各位幕友提出建议!! package test01; import java.util.Scanner; public class Test ...

  5. c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出

    2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...

  6. 4、编写程序,根据用户输入的数字转换成相应的中文的大写数字。例如,1.23转换为“壹点贰叁”。

    –Python 4.编写程序,根据用户输入的数字转换成相应的中文的大写数字.例如,1.23转换为"壹点贰叁". 问题遇到的现象和发生背景 输入含有0就不会输出 问题相关代码 imp ...

  7. python将中文数字转化成阿拉伯数字

    python将中文数字转化成阿拉伯数字 正则表达式提取文本中的数字 中文转化成阿拉伯数字 完整代码 正则表达式提取文本中的数字 这里演示一下文本中提取中文年份 import re m0 = " ...

  8. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  9. JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)

    将输入的一串数字转换成中文大写,最高可写12位(千亿) 例:输入:10000,输出:壹万 输入:10010,输出:壹万零壹拾 源码: function toChineseBig(num) {// 将接 ...

最新文章

  1. 2015年你必须学习的编程语言和前端框架
  2. matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
  3. 算法(27)-最大系列
  4. React 入门学习笔记2
  5. c语言大型软件设计的面向对象_C语言跟C++的根本区别以及特点
  6. pytorch修改tensor数据类型
  7. 嵌入式Linux系统编程学习之七gdb调试器
  8. Lengauer-Tarjan算法--支配树构造(bzoj 2815: [ZJOI2012]灾难)
  9. 辨别Python中load和loads的小技巧
  10. 【渝粤教育】电大中专学习指南 (2)作业 题库
  11. Linux如何下解压windows下的.zip和.rar文件
  12. 将两个(或多个)Item建立关联 app_field.set_dependent_field和app_field.clear_dependent_fields...
  13. b站弹幕姬python_自用 Bilibili 弹幕姬 for macOS
  14. QT QAudioOutput+QIODevice 音频流实时播放
  15. 单元在整体坐标系下的刚度矩阵
  16. Matlab使用-norm函数
  17. typedef使用方法
  18. python乒乓球比赛规则介绍_乒乓球比赛的简要规则
  19. 落花人独立,微雨燕双飞——晏几道《临江仙》
  20. ​资源分享知识付费下载网站源码​

热门文章

  1. 集合竞价如何买入_如何在集合竞价买入股票?
  2. (C语言)小玉在游泳
  3. JAVA PYTHON中小学课程的在线辅导培训系统
  4. 用Inkspace制作一个简易LOGO的过程
  5. 微信小程序 联想搜索功能的实现
  6. 上海理工大学机械工程学院考研经验
  7. 手机--三星S6edge的几个致命问题
  8. VUE 记一次高德地图和Echarts(中国地图)
  9. 3次冲刺IPO,拉卡拉坎坷上市路
  10. 打印机安装(驱动+安装)