输入数字,转换成汉字,在统计数据量时很好用,而输入数字转成大写汉字,可以用于填写收据报销单哦

下载链接

https://pan.baidu.com/s/1nv3Ci6l

效果图如下:

直接上代码

object toChinese {
def toChinese(number: Long) = {
var count = number.toString.reverse.toList.map(_.toString.toInt)
val num = List("零", "一", "二", "三", "四", "五", "六", "七", "八", "九")
val numtype = List("", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千")
var ch: List[String] = Nil
for (i <- 0 until count.length - 1) {
if (count(i + 1) == 0 && count(i) != 0) {
ch = ch :+ "零" + (num(count(i)) + numtype(i))
}
if (count(i + 1) != 0 && count(i) != 0) {
ch = ch :+ (num(count(i)) + numtype(i))
}
else if (i == 4 && !(count.length>7 && count(4)==0&& count(5)==0&& count(6)==0&& count(7)==0)) {
ch = ch :+ "万"
}
else if (i == 8) {
ch = ch :+ "亿"
}
}
ch = ch :+ (num(count.last) + numtype(count.length - 1))
ch.reverse.mkString("")
}
def toChinesemoney(number: Long) = {
var count = number.toString.reverse.toList.map(_.toString.toInt)
val num = List("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
val numtype = List("", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟")
var ch: List[String] = Nil
for (i <- 0 until count.length - 1) {
if (count(i + 1) == 0 && count(i) != 0) {
ch = ch :+ "零" + (num(count(i)) + numtype(i))
}
if (count(i + 1) != 0 && count(i) != 0) {
ch = ch :+ (num(count(i)) + numtype(i))
}
else if (i == 4&& !(count.length>7 && count(4)==0&& count(5)==0&& count(6)==0&& count(7)==0)) {
ch = ch :+ "万"
}
else if (i == 8) {
ch = ch :+ "亿"
}
}
ch = ch :+ (num(count.last) + numtype(count.length - 1))
ch.reverse.mkString("")+"元"
} def main(args: Array[String]) = {
println("**********************************************")
println("*********欢迎使用最帅的数字转汉字工具*********")
while (1==1){
var flag=true
while (flag){
try {
println("请选择使用方式 A:数字转汉字 B:数字转大写汉字")
println("选择后可输入:q重新选择")
val line0 = Console.readLine()
var flag=true
while (flag) {
if (line0 == "A") {
try{
println(">>>>>>>>>请输入数字")
val line1 = Console.readLine()
if(line1==":q"){flag=false} else{println(toChinese(line1.toLong))}}
catch {
case e: Exception => {
println("!!!输入有误!!!")
println(">>>>>>>>>错误信息:" + e.getMessage)
}
}
}
else if (line0 == "B") {
try{
println(">>>>>>>>>请输入数字")
val line2 = Console.readLine()
if(line2==":q"){flag=false} else{println(toChinesemoney(line2.toLong))}}
catch {
case e: Exception => {
println("!!!输入有误!!!")
println(">>>>>>>>>错误信息:" + e.getMessage)
}
}
}
else{println("!!!输入有误!!!");flag=false}
}
}catch {
case e: Exception => {
println("!!!输入有误!!!")
println(">>>>>>>>>错误信息:" + e.getMessage)
}
}}}
}
}

欢迎下载使用,谢谢

												

scala练手之数字转汉字小工具的更多相关文章

  1. 练手WPF(四)——贪吃蛇小游戏的简易实现(下)

    八.生成新的单节蛇身我们这里先说说游戏小原理好了,游戏运行后,通过计时器事件不断生成新的单节蛇身类SnakeNode,添加到List中的0位置,原来的蛇头变成了第二节.该节新蛇头的坐标通过蛇头前进方向 ...

  2. 练手WPF(四)——贪吃蛇小游戏的简易实现(上)

    一. 游戏界面首先,按照惯例,编辑MainWindow.xaml,先将游戏界面制作好.非常简单:(1)主游戏区依然使用我们熟悉的Canvas控件,大小为640X480像素,设定每小格子为20px,所以 ...

  3. 【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  4. 整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  5. 练手WPF(一)——模拟时钟与数字时钟的制作(上)

    一.Visual Studio创建一个WPF项目. 简单调整一下MainWindow.xaml文件.主要使用了两个Canvas控件,分别用于显示模拟和数字时钟,命名为AnalogCanvas.digi ...

  6. java客房管理小项目,适合java小白练手的项目!

    java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私 ...

  7. 初始Spring MVC——练手小项目

    初始Spring MVC 前几天开始了我的spring学习之旅,由于之前使用过MVC模式来做项目,所以我先下手的是 Spring MVC,做个练手项目,非常简单 项目介绍: 用户输入信息 -> ...

  8. 微信小程序初体验,入门练手项目--通讯录,部署上线(二)

    接上一篇<微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器>:https://www.cnblogs.com/chengxs/p/9898670.html 开发微信小程序最尴尬 ...

  9. 微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器(一)

    内容: 一.前言 二.相关概念 三.开始工作 四.启动项目起来 五.项目结构 六.设计理念 七.路由 八.部署线上后端服务 同步交流学习社区: https://www.mwcxs.top/page/4 ...

随机推荐

  1. 检测Windows程序的内存和资源泄漏之原生语言环境

    最近接连收到大客户的反馈,我们开发的一个软件,姑且称之为App-E吧,在项目规模特别大的情况下,长时间使用会逐渐耗尽内存,运行越来越缓慢,软件最终崩溃.由于App-E是使用混合语言开发的,主界面使用C ...

  2. Nginx网站使用CDN之后禁止用户真实IP访问的方法

    做过面向公网WEB的运维人员经常会遇见恶意扫描.拉取.注入等图谋不轨的行为,对于直接对外的WEB服务器,我们可以直接通过 iptables .Nginx 的deny指令或是程序来ban掉这些恶意请求. ...

  3. 原生JS实现弹出窗口的拖拽

    上一篇说了一下弹出窗口功能的实现思路,一般情况下紧接着就会需要做到弹窗的移动,当然现在有很插件.库比如hammer可以使用,效率也非常好.但我觉得还是有必要了解一下原生JS的实现思路及方式,如下: 思 ...

  4. selenide小白教程

    目的: 趁着清明假期临近把手头工作整理了一下,前段时间老大给了一个selenide研究的任务,虽然对selenium的应用比较熟悉,但是以前一直没怎么研究过其他衍生的技术,在研究过程中发现国内好的帖子 ...

  5. js-面试题之字符串

    问题:输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符串不可以使用replace<!--例如:输入"They are students" 和"aeiou ...

  6. Grafana中多租户设置

    Grafana中通过设置不同的组织,以及将用户分配到不同组织,来做到多租户,类似门户的概念. Grafana默认是不允许非管理员用户创建新的组织的,这个可以通过修改配置文件以允许非管理员用户创建组织: ...

  7. Framework7首页隐藏navbar其他页面显示navbar

    Framework7首页隐藏navbar其他页面显示navbar 帮别人解决问题,自己也记录一下, 首页.navbar加.navbar-hidden, 首页.page加.no-navbar, 如果首页 ...

  8. Android 学习笔记之实时保存数据-现场保护onSaveInstanceState()

    数据保存:在软件开发中我们希望保存下各个Activity数据,以实现客户数据的时时保存,达到较好的用户体验. 那么我们需要解决如下问题: 1.什么时候保存? 2.保存哪些数据?     我想保存应用产 ...

  9. Python 安装虚拟环境

    写在前面: 安装指南是在 Ubuntu 下面操作的.不同的 Linux 版本,安装指令不同.所以,该指南的某些指令对于像 CentOS 等非 Ubuntu 系统不适用. 为什么需要使用虚拟环境? 虚拟 ...

  10. php变量布尔值验证

    使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; str ...