package cn.aikang.ChineseC;

 import java.util.Scanner;

 /**
  * @Description: TODO(这里用一句话描述这个类的作用)
  * @Author aikang
  * @Date 2019/10/12 11:52
  */
 public class ChineseCapitalization {
     //用户输入数字字符串解析为中文大写
     //1.定义主方法
     public static void main(String[] args) {
         //调用用户输入
         String userInput = userScanner();
         //判断输入是否是纯数字
         //定义一个字符串用来接收转换后数据
         String Result = null;
         if (userInput == null) {
             System.out.println("非法字符");
         } else if(userInput.startsWith("0")){
             String userStr = userInput.substring(1);
             //调用数字大写匹配功能传入数字字符串
             Result = transFormation(userStr);
         }else{
             Result = transFormation(userInput);
         }
         //判断返回的字符串是否是零结尾如果是则删除
         if (Result.endsWith("零")){
             System.out.println(Result.replace("零", ""));
         }else{
             System.out.println(Result);
         }
     }

     //定义一个用户输入功能
     public static String userScanner() {
         //1.创建scanner类
         Scanner scanner = new Scanner(System.in);
         //2.创建变量存储数字
         String num = null;
         //3.提示用户
         System.out.println("请输入数字");
         //4.判断用户输入是否是纯数字
         if (scanner.hasNextInt()) {
             num = scanner.nextLine();
         }
         return num;
     }

     //定义一个匹配功能
     public static String transFormation(String userInput) {
         //1.定义一个匹配数组
         char[] capitaLization = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};
         char[] company = {'拾', '佰', '仟','万'};

         //2.把传入的字符串转换为数组遍历进行替换数字
         //2.1定义一个字符串存储拼接
         String p = "";
         //2.2定义字符串变量用作返回值
         String numFinal = "";
         //字符串转换为数字
         char[] ps = userInput.toCharArray();

         //定义变量统计单位下标
         int a = 0;
         //倒序循环字符串
         for (int i = ps.length - 1; i >= 0; i--) {
             //如果单位下标不越界
             if(i == ps.length - 1){
                 p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];
             }else if (a < company.length) {
                 p += String.valueOf(company[a]);
                 p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];
                 a++;
             } else {
                 //如果下标越界了然下标回到1这里使用0
                 a = 0;
                 p += String.valueOf(company[0]);
                 p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];
                 a++;
             }
         }
         //如果字符串长度大于9说明到亿位所以替换亿位和万位的单位
         //1.替换好的字符串转为数组 玖拾捌佰柒仟陆拾伍佰肆仟叁拾贰佰壹
         char[] userI = p.toCharArray();
         //如果字符数组长度大于17则说明有亿位
         if(userI.length>=17){
             //替换亿位单位15
             userI[15] = '亿';
         }
         //反转字符数组
         //倒循环数组对p赋值
         for (int i = userI.length-1; i >=0; i--) {
             numFinal += String.valueOf(userI[i]);
         }
         return numFinal;
     }
 }

java实现数字转中文大写的更多相关文章

  1. JAVA处理数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999)

    package practice; import java.util.Arrays; /** * 数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999) * @au ...

  2. 【OBJC】数字转中文大写

    博客园都不知道怎么外链图片…… - (void)numToString:(double)num{ ; NSMutableString *szChMoney = [[NSMutableString al ...

  3. PHP人民币金额数字转中文大写的函数

    <?php header("Content-Type:text/html;charset=utf-8"); error_reporting(2); function cny( ...

  4. SQL 数字转为中文大写

    USE [SPECIAL_BLD]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO CREATE FUNCTION [dbo].[get_upper] ...

  5. 数字转中文大写=> 1234=> 一千二百三十四

    # -*- coding: utf-8 -*- # 最大值:九兆九千九百九十九亿九千九百九十九万九千九百九十九 import re p = ['', '十', '百', '千', '万', '十', ...

  6. java 数字转中文

    java代码 数字转中文,该方法只做了对int型整数的转换 private static String numberToChinese(int number) { String[] numbers = ...

  7. XtraReport报表入库单数字转中文大写数字

    先看看打印入库单的效果图,看如下: 客户要求合计一行,要求大写中文数字.XtraReport报表是如何做出以上图的效果呢?因为是要把数字转成大写中文数字,得先准备数字转大写中文数字的函数.因网上有很多 ...

  8. Java 阿拉伯数字转换为中文大写数字

    Java 阿拉伯数字转换为中文大写数字 /** * <html> * <body> * <P> Copyright 1994 JsonInternational&l ...

  9. Java中过滤出字母、数字和中文的正则表达式

    1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2)过滤出数字的正则表达式 [^(0-9)] (3)过滤出中文的正则表达式 [^(\\u4e0 ...

随机推荐

  1. 剑指offer——70n个骰子的点数

    题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 题解: 使用两个数组存每次投的点数 void theProbability(const int ...

  2. JSoup安装

    要运行任何jsoup示例,需要先安装好jsoup相关Jar包.到目前为止(2017年05月),jsoup的当前版本是1.10.2.0.安装jsoup主要有三种方法: 通过Maven的pom.xml配置 ...

  3. PHP对象在内存中的分配(转载)

    http://www.cnblogs.com/hongfei/archive/2012/06/12/2547120.html 对像在PHP 里面和整型.浮点型一样,也是一种数据类,都是存储不同类型数据 ...

  4. Feign 系列(02)Why Feign

    Feign 系列(02)Why Feign [toc] 1. 什么是 Feign Feign 的英文表意为"假装,伪装,变形", 是一个 Http 请求调用的轻量级框架,可以以 J ...

  5. es-字段类型整理(6.x及以上)

    以下为主要的数据类型,特殊的或者比较冷门的不予关注: 类型分类 子分类 具体类型 核心类型 字符串 text,keyword 整数 byte,short,integer,long 浮点 double, ...

  6. Python 内置函数&filter()&map()&reduce()&sorted()

    常用内置函数 Python 2.x 返回列表,Python 3.x 返回迭代器 在进行筛选或映射时,输出的结果是一个数组,需要list帮助. 如:print(list(map(lambda x:x+1 ...

  7. 不在B中的A的子串数量 HDU - 4416 (后缀自动机模板题目)

    题目: 给定一个字符串a,又给定一系列b字符串,求字符串a的子串不在b中出现的个数. 题解: 先将所有的查询串放入后缀自动机(每次将sam.last=1)(算出所有子串个数) 然后将母串放入后缀自动机 ...

  8. URL&HTTP协议&GET请求&POST请求

    1.什么是URL URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个 ...

  9. 在vue中运用mt-loadmore 实现上拉加载,下拉刷新

    元旦了,给手残党直接复制的机会,代码如下: 1. :style="{'-webkit-overflow-scrolling': scrollMode}" 最外层div设置,以便兼容 ...

  10. ASP.NET 中 ContentType 类型

    在ASP.NET中使用Response.ContentType="类型名";来确定输出格式 不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 ...