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

做企业福利网站起名/东莞疫情最新消息今天新增

做企业福利网站起名,东莞疫情最新消息今天新增,北京网站后台培训,餐饮管理和营销方案2019独角兽企业重金招聘Python工程师标准>>> author CeoiHong 答:首先分析数字的读法规则,将数字每四位一组,每组末尾连续的0读作 仟(如1000)、佰(100)、拾(10&#xff…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

@author  CeoiHong

答:首先分析数字的读法规则,将数字每四位一组,每组末尾连续的0读作 仟(如1000)、佰(100)、拾(10),非0数字之前的0读零,多个0只读一个零。

每四个数一组,组的单位从右往左依次是 : 一(不读)、萬、亿...这里不考虑更大的数。

当一组数全为0时,所处的位置不同,读法也不同。比如1010 0000 1010 中读零;1010 0000 0000 这里不读出来。

先确定每组数的读法,再确定该组的单位,最后将各组的读法连接起来即可。

 

每个四位数组先判断千位数是否为0,再判断百位数,再判断十位数,最后判断个位数。

这种四层嵌套判断比较麻烦,容易出错。所以在纸上画出判断的先后顺序会好理解点。

* 下面是判断的顺序:

 * 仟    佰    拾    个

 * 1    1    1    1    x仟x佰x拾x    ---x代表阿拉伯数字的中国传统写法,如 1 对应 壹

 * 1    1    1    0    x仟x佰x拾

 * 

 * 1    1    0    1    x仟x佰零x

 * 1    1    0    0    x仟x佰

 * 

 * 1    0    1    1    x仟零x拾x

 * 1    0    1    0    x仟零x拾

 * 

 * 1    0    0    1    x仟零x

 * 1    0    0    0    x仟

 * 

 * 0    1    1    1    x佰x拾x

 * 0    1    1    0    x佰x拾

 * 

 * 0    1    0    1    x佰零x

 * 0    1    0    0    x佰

 * 

 * 0    0    1    1    x拾x

 * 0    0    1    0    x拾

 * 

 * 0    0    0    1    x

 * 0    0    0    0    零/不读

 * 每个四位数组都只有这16中情况,将每种可能的情况进行判断后即可得到正确的读法。

 * 确定了单组的读法之后,组的排序不同又有不同的读法。针对不同单位内的读法,采取与上面相同的操作

 * 全为0的记为0,非全0的记为1,即又有以下几种可能情况:

 * 亿    萬    一

 * 1    1    1    x亿x萬x    ----x代表每4位数组的写法,如1034  对应 壹仟零叁拾肆

 * 1    1    0    x亿x萬

 * 1    0    1    x亿零x  ---如果最后一组数是0开头,则删除一个“零”

 * 1    0    0    x亿

 *         1    1    x萬x

 *         1    0    x萬

 *             1    x



public static void main(String[] args) {//关联输入流,读取键盘录入。Scanner sc = new Scanner(System.in);System.out.println("输入一个12位以内的数字,输入end结束:");//循环录入数据while(true){String input = sc.next();//如果输入数据是0开头,去掉数据头部的0String num = null;for(int i=0;i<input.length();i++){if(input.charAt(i) != '0'){num = input.substring(i);break;}}//输入数字长度超过12则跳过此次循环if(num.length() > 12){System.out.println("请输入12位以内的数字:");continue;}//输入end结束录入if(num.equals("end"))break;//解析该数字writeWithUnit(num);}}private static void writeWithUnit(String num) {//四位数一组,不足四位的也作为一组。int groups = (int) Math.ceil(num.length()/4.0);//创建一个和组数相同的字符串数组。String[] parts = new String[groups];//不足四位的第一组内数字个数,比如“123456”,第一组内存放“12”,第二组存放“3456”int firstGroup = num.length()%4;if(firstGroup != 0){for(int i=0;i<groups;i++){if(i==0){parts[i] = num.substring(0, firstGroup);}else{parts[i] = num.substring((i-1)*4 + firstGroup,i*4 + firstGroup);}}}else{//如果数字刚好可以被4整除,则每组放4个数字for(int i=0;i<groups;i++){parts[i] = num.substring(i*4,(i+1)*4);}}StringBuffer sb = new StringBuffer();/*** 由于全0组的位置会影响单位和写法,所以采用和writeInTraditionalWay方法中相同的判断方法* 每组数中,四位全0的记为0,非全0 的记为1,在考虑的范围内(不考虑亿以上级别的数)的可能情况有下面几种。* 1    1    1* 1    1    0* 1    0    1* 1    0    0*         1    1*         1    0*             1* 依次对数字个数的不同进行判断。*///只有一组数时,即只有1~4位数if(groups == 1){sb.append(writeInTraditionalWay(parts[0]));//不满4位的在writeInTraditionalWay方法中在StringiBuffer对象首部添加了“零”,这里去掉首部的“零”。if(parts[0].length()<4){sb.deleteCharAt(0);}//当有两组数时,即有5~8位数}else if(groups == 2){sb.append(writeInTraditionalWay(parts[0])).append("萬");//在不足8位数时,即第一组数不足4位,在StringBuffer对象首部添加了“零”,要去掉首部的“零”。if(parts[0].length()<4){sb.deleteCharAt(0);}//第二组数如果不是全0,则添加到sb末尾,单位“一”省略不写。if(!parts[1].contains("0000"))sb.append(writeInTraditionalWay(parts[1]));//当有三组数时,即9~12位数}else if(groups == 3){sb.append(writeInTraditionalWay(parts[0])).append("亿");//在不足12位数时,即第一组数不足4位,在StringBuffer对象首部添加了“零”,要去掉首部的“零”。if(parts[0].length()<4){sb.deleteCharAt(0);}//如果第二组数不是全0,则添加到sb末尾,单位为“萬”if(!parts[1].contains("0000")){sb.append(writeInTraditionalWay(parts[1])).append("萬");//如果第三组数不全为0,则添加到sb末尾,单位为“一”,省略不写。if(!parts[2].contains("0000")){sb.append(writeInTraditionalWay(parts[2]));}//如果第二组数全为0}else{//如果第三组数不全为0则添加到sb末尾,单位为“一”,省略不写。如果全为0时,不读。比如1234 0000 5678中的四个0不读出来。if(!parts[2].contains("0000")){if(writeInTraditionalWay(parts[2]).startsWith("零")){sb.append(writeInTraditionalWay(parts[2]));}sb.append(writeInTraditionalWay(parts[1])).append(writeInTraditionalWay(parts[2]));}}}//输出System.out.println(sb.toString());}//将一个单独的四位数组转换成传统写法public static String writeInTraditionalWay(String str){StringBuffer sb = new StringBuffer();int i = Integer.parseInt(str);//得到这个数的千位,百位,十位,个位的数int qianwei = i/1000;i = i%1000;int baiwei = i/100;i = i%100;int shiwei = i/10;i = i%10;int gewei = i;//千位不为0if(qianwei > 0){//写作x仟sb.append(baseNumber(qianwei)).append("仟");//百位也不为0if(baiwei > 0){//写作x仟x佰sb.append(baseNumber(baiwei)).append("佰");//十位不为0if(shiwei > 0){//写作x仟x佰x拾sb.append(baseNumber(shiwei)).append("拾");//个位不为0if(gewei > 0){//写作x仟x佰x拾x,此时写法已经确定,返回该值。return sb.append(baseNumber(gewei)).toString();}else{//个位为0,写作x仟x佰x拾,写法确定,返回。return sb.toString();}//十位为0}else{if(gewei > 0){//个位不为0,写作x仟零x,写法确定,返回。return sb.append(baseNumber(0)).append(baseNumber(gewei)).toString();}else{//个位为0,写作,x仟x佰,写法确定,返回。return sb.toString();}}}else{//baiwei == 0  一下的判断和上面的判断类似。if(shiwei > 0){sb.append(baseNumber(0)).append(baseNumber(shiwei)).append("拾");if(gewei > 0){return sb.append(baseNumber(gewei)).toString();}else{return sb.toString();}}else{if(gewei > 0){return sb.append(baseNumber(0)).append(baseNumber(gewei)).toString();}else{return sb.toString();}}}}else{if(baiwei > 0){sb.append(baseNumber(0)).append(baseNumber(baiwei)).append("佰");if(shiwei > 0){sb.append(baseNumber(shiwei)).append("拾");if(gewei > 0){return sb.append(baseNumber(gewei)).toString();}else{return sb.toString();}}else{if(gewei > 0){return sb.append(baseNumber(0)).append(baseNumber(gewei)).toString();}else{return sb.toString();}}}else{if(shiwei > 0){sb.append(baseNumber(0)).append(baseNumber(shiwei)).append("拾");if(gewei > 0){return sb.append(baseNumber(gewei)).toString();}else{return sb.toString();}}else{if(gewei > 0){return sb.append(baseNumber(0)).append(baseNumber(gewei)).toString();}else{return sb.append(baseNumber(0)).toString();}}}}}//返回基本数字的写法public static String baseNumber(int i){switch(i){case 0:return "零";case 1:return "壹";case 2:return "贰";case 3:return "叁";case 4:return "肆";case 5:return "伍";case 6:return "陆";case 7:return "柒";case 8:return "捌";case 9:return "玖";default:return null;}}


转载于:https://my.oschina.net/sherwayne/blog/297684

http://www.lbrq.cn/news/784747.html

相关文章:

  • 浏览器如何做购物网站/网络营销一般月薪多少
  • 网站查询功能怎么做/百度云群组
  • 网站建设色调的/seo网站推广服务
  • wordpress 查看文章404/贵州seo学校
  • 网站开发需求说明书/新闻最新消息今天
  • 二建转注辽宁建设主管部门网站/广州品牌营销策划公司排名
  • b2b商业模式/长沙靠谱seo优化价格
  • 广州网站手机建设公司/怎么制作网址
  • 论文收录网站有哪些/注册域名费用一般多少钱
  • 怎样在b2b网站做推广/东莞新闻头条新闻
  • 免费建设淘宝客网站/镇江seo
  • 杭州专业网站设计制作公司/淘宝引流推广平台
  • 乡村网站建设/91永久海外地域网名
  • 武汉 网站建设 招标公告/爱站seo工具包官网
  • 什么人适合做服装设计师/惠州seo排名优化
  • 做网站设计制作的/中国新闻网发稿
  • 2017湖北建设教育协会网站/临沂seo全网营销
  • 阿里云服务器网站建设/百度培训
  • html网站模板资源/最近新闻摘抄50字
  • -邵阳网络公司-邵阳网站建设|邵阳网站制作/中国十大电商平台
  • 江苏连云港网站制作公司/爱采购seo
  • 新建的网站必须要备案吗/怎么自己制作网站
  • 做消费信贷网站/网红营销
  • 网站2级目录怎么做/关键词推广排名软件
  • 河南科技网站建设/深圳发布最新通告
  • 株洲网站建设设计/新浪微指数
  • 如何在网盘上做网站/百度上海分公司
  • net网站开发技术方案/微信投放广告多少钱
  • 电商网页美工设计/seo管理平台
  • 做一名优秀网站设计师计划/简单网页制作成品免费
  • Solidity智能合约基础
  • Electron-updater + Electron-builder + IIS + NSIS + Blockmap 完整增量更新方案
  • Dubbo-Go调Bug记录-泛化调用调不通
  • 零售消费行业研究系列报告
  • 文件与目录操作命令
  • 01数据结构-时间复杂度和空间复杂度