当前位置: 首页 > news >正文

JAVA常见算法题(二十五)

/**
 * Java实现中文数字转换为阿拉伯数字
 * 
 * 
 * @author WQ
 *
 */
public class Demo26 {
    public static void main(String[] args) {
        int chineseNumber2Int = chineseNumber2Int("十万一千");
        System.out.println(chineseNumber2Int);
    }

    private static int chineseNumber2Int(String chineseNumber) {
        int result = 0;
        int temp = 1;// 存放一个单位的数字如:十万
        int count = 0;// 判断是否有chArr
        char[] cnArr = new char[] { '一', '二', '三', '四', '五', '六', '七', '八', '九' };
        char[] chArr = new char[] { '十', '百', '千', '万', '亿' };
        for (int i = 0; i < chineseNumber.length(); i++) {
            boolean b = true;// 判断是否是chArr
            char c = chineseNumber.charAt(i);
            for (int j = 0; j < cnArr.length; j++) {// 非单位,即数字
                if (c == cnArr[j]) {
                    if (0 != count) {// 添加下一个单位之前,先把上一个单位值添加到结果中
                        result += temp;
                        temp = 1;
                        count = 0;
                    }
                    // 下标+1,就是对应的值
                    temp = j + 1;
                    b = false;
                    break;
                }
            }
            if (b) {// 单位{'十','百','千','万','亿'}
                for (int j = 0; j < chArr.length; j++) {
                    if (c == chArr[j]) {
                        switch (j) {
                        case 0:
                            temp *= 10;
                            break;
                        case 1:
                            temp *= 100;
                            break;
                        case 2:
                            temp *= 1000;
                            break;
                        case 3:
                            temp *= 10000;
                            break;
                        case 4:
                            temp *= 100000000;
                            break;
                        default:
                            break;
                        }
                        count++;
                    }
                }
            }
            if (i == chineseNumber.length() - 1) {// 遍历到最后一个字符
                result += temp;
            }
        }
        return result;
    }

}

 

相关文章:

  • A10 负载均衡模拟器下载安装及license免费激活详细介绍
  • 学习JAVA,如何从入门到精通
  • VC++ 监视文件(夹)
  • 7-angular.extend
  • 通过mysql-proxy映射外网访问内网数据库
  • DocX开源WORD操作组件的学习系列二
  • js获取屏幕大小,元素top值等等
  • STM32中assert_param的使用
  • sass/scss 和 less的区别
  • c#时间格式
  • Kali Linux Wine32英文字体不显示问题
  • Redirect和Forward
  • Android View 事件分发机制 源代码解析 (上)
  • 配置maven
  • NumPy 中的线性代数
  • 分享一款快速APP功能测试工具
  • ➹使用webpack配置多页面应用(MPA)
  • 4个实用的微服务测试策略
  • CentOS从零开始部署Nodejs项目
  • HashMap ConcurrentHashMap
  • JavaScript函数式编程(一)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 闭包,sync使用细节
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于web的全景—— Pannellum小试
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用Swoole加速Laravel(正式环境中)
  • 用mpvue开发微信小程序
  • 原生js练习题---第五课
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 函数计算新功能-----支持C#函数
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (libusb) usb口自动刷新
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Note)C++中的继承方式
  • (Python第六天)文件处理
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Dubbo快速入门、介绍、使用
  • (原)本想说脏话,奈何已放下
  • (转)socket Aio demo
  • ./和../以及/和~之间的区别
  • .Mobi域名介绍
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Micro Framework初体验