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

下载链接

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. java的特点跨平台原理以及JDK的安装

    终于开始了期待已久的java,了解java首先要了解下计算机语言的发展历史 机器语言--->汇编语言--->--->高级语言(面向过程的语言和面向对象的语言) 机器语言 每一个计算机 ...

  2. trigger和triggerhandler的区别

    1. trigger会触发默认行为2. trigger会触发所有元素的模拟事件,而triggerHandler只触发一次3. trigger可以链式操作,triggerHandler不能4. trig ...

  3. OC--Runtime知识点整理

    1.Runtime简介 因为Objc是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时.也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译 ...

  4. LeetCode -- Word Break 动态规划,详细理解

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  5. 性能调优之访问日志IO性能优化

    性能调优之访问日志IO性能优化   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...

  6. 大数据测试之初识Hadoop

    大数据测试之初识Hadoop POPTEST老李认为测试开发工程师是面向测试的开发,也就是说,写代码就是为完成测试任务服务的,写自动化测试(性能自动化,功能自动化,安全自动化,接口自动化等等)的cas ...

  7. 老李分享: Oracle Performance Tuning Overview 翻译

    老李分享: Oracle Performance Tuning Overview 翻译   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工 ...

  8. Java ---自定义标签(二)

    上篇文章的最后,我们自定义了一个带属性的标签,并使用它完成了一个简单的案例.其实到这我们已经可以看出来,前端jsp页面只需要写一个类似html语法的标签,就可以完成将集合中的数据取出来并展示这么相对复 ...

  9. XML查询

    XPath是XML的查询语言,其内容相当复杂.可以查阅www.w3.org/TR/xpath. 下面以一个实例简单了解一线XPath的查询方法: public partial class Form1 ...

  10. filter滤镜的使用

    刚开始学css,开始遇到filter不懂什么意思后来到网上查了,觉得解释的很全面,就把它抠下来,以便自己经常来看看. CSS滤镜的使用方法:filter:filtername(parameters) ...