本以为是个很简单的题,但写完之后发现各种bug,各种改。只是实现了功能而已。程序效果如下:

请输入您的数字(输入quit退出):
1
一
103
一百零三
12349234
一千二百三十四万九千二百三十四
10023002340
一百亿零二千三百万零二千三百四十
100000000000
一千亿
324034030
三亿二千四百零三万四千零三十
1000002130
一十亿零二千一百三十

源代码如下:

import java.util.Scanner;public class Convert {public static String[] units= {"","十","百","千","万"};public static String[] flagUnits= {"","万","亿"};public static void main(String[] args){Scanner sc=new Scanner(System.in);System.out.println("请输入您的数字(输入quit退出):");while(true){String number=sc.nextLine();if(number.equals("quit"))break;System.out.println(getResult(number));}}static String getResult(String number){int numberLen=number.length();int subFlag=(int) Math.ceil(number.length()/4.0);boolean isFirstCharArray=true;StringBuffer sbResult=new StringBuffer();int notZeroFlag=0;while(number.charAt(numberLen-1-notZeroFlag)=='0'){    notZeroFlag++;}while(subFlag>(notZeroFlag)/4){ if(isFirstCharArray){char[] subCharArray=new char[numberLen%4==0?4:numberLen-(subFlag-1)*4];subFlag--;number.getChars(0, subCharArray.length, subCharArray, 0);sbResult.append(getSubResult(subCharArray,subFlag,notZeroFlag));isFirstCharArray=false;}else{        char[] subCharArray=new char[4];number.getChars(numberLen-(subFlag--)*4, numberLen-(subFlag)*4, subCharArray, 0);sbResult.append(getSubResult(subCharArray,subFlag,notZeroFlag));}}return deleteZero(sbResult);}static StringBuffer getSubResult(char[] sub,int subflag,int notZeroFlag){int zeroFlag=0;while(sub[sub.length-1-zeroFlag]=='0')    {zeroFlag++;if(zeroFlag==sub.length){return new StringBuffer("零");}}StringBuffer sb=new StringBuffer();for(int i=0;i<sub.length-zeroFlag;i++){sb.append(charToStr(sub[i]));if(sub[i]=='0'){continue;       }sb.append(units[sub.length-i-1]);}sb.append(flagUnits[subflag]);if(zeroFlag!=0&&subflag!=0&&notZeroFlag/4!=subflag){sb.append("零");}return sb;}static String deleteZero(StringBuffer sb){for(int i=0;i<sb.length()-1;i++){if(sb.charAt(i)==sb.charAt(i+1)){sb.replace(i, i+1, "");i--;}}return sb.toString();}static String charToStr(char numChar){switch(numChar){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 "九";case '0':return "零";default:return "";}}
}

小写数字转化为大写数字相关推荐

  1. 关于把小写数字转化为大写数字的java代码

    import java.math.BigDecimal; public class ConvertNumber { /** 定义数组存放数字对应的大写 */ private final static ...

  2. 用VB代码把4位数字转化为汉字数字

    用VB代码把4位数字转化为汉字数字. '把四位数字转换成大写汉字 Public Function Big(ByRef n As String) As ObjectDim i As ObjectDim ...

  3. JS字符串过滤数字_过滤大写数字

    JS字符串过滤数字_过滤大写数字 代码案例: //数字替换 if(data.summary){data.summary=data.summary.replace(/[\d|壹|贰|叁|肆|伍|陆|柒| ...

  4. 设计函数实现将一个字符串中小写字母转化为大写字母

    题目: 设计函数实现将一个字符串中小写字母转化为大写字母 #include<stdio.h> #include<stdlib.h> void uppers(char *s,ch ...

  5. 输入字符,如果是大写则转化为小写,如果是小写则转化为大写

    输入字符,如果是大写则转化为小写,如果是小写则转化为大写 #include<stdio.h> int main(){ char ch; printf("Please enter ...

  6. 将(123)数字转换成大写数字(壹,贰,弎)

    此方法 将(123)数字转换成大写数字(壹,贰,弎) RMBUtils.toChineseUnit()

  7. python语言中ch_已知在Python语言中 upper() 函数可以将英文小写字母转化为大写字母,例如: 'cpda'.upper() CPDA 则下列语句的输出结果为 CHINACPD...

    已知在Python语言中 upper() 函数可以将英文小写字母转化为大写字母,例如: >>> 'cpda'.upper() CPDA 则下列语句的输出结果为 CHINACPDA a ...

  8. Element-ui中InputNumber 将日文全角输入法的数字转化为半角数字

    Element-ui中InputNumber 将日文全角输入法的数字转化为半角数字 发现问题 修改Element-UI 的 InputNumber 计数器组件 效果 发现问题 这周测试人员在测试的时候 ...

  9. 如何把大写金额变为小写数字_怎样将带有小数点的小写数字转化为大写

    Excel要将人民币小写金额转换成大写格式,将自定义格式类型中的"G/通用格式"改为G/通用格式"元"" 来实现.但在转换小数时却出现了问题,比如12 ...

最新文章

  1. Linux命令grep
  2. 未授权用户在此计算机上的的请求登陆类型
  3. 中小企业如何实现在家研发软件?看这个就够了
  4. BZOJ-2337-XOR和路径
  5. c语言最长公共子序列_LCS(最长公共子序列)
  6. 【机器学习基础】深入理解Logistic Loss与回归树
  7. Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示
  8. @codeforces - 1096G@ Lucky Tickets
  9. 在Tomcat上设置和使用Apache Solr
  10. 【深度揭秘】百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!
  11. leetcode —— 1282. 用户分组
  12. 随想录(源代码预处理命令)
  13. pip下载速度慢的解决方法
  14. sci协议集群服务器,唠嗑|新出了关于SCI的规定,可我连SCI分区都没搞明白
  15. python多线程抢票_抢票 抢票 抢票!Python大牛带你实现12306全自动抢票
  16. 跨实例查询 mysql_SQL语句怎么搞定跨实例查询?
  17. wo-27s管理员账户和密码_“无法使用内置管理员账户打开”应用
  18. Nginx 重写功能(location / rewrite)
  19. ArrayList的last方法
  20. 肖特基二极管的反向恢复过程

热门文章

  1. MS Visual Studio 2008 编译错误 microsoft visual studio 9.0\vc\include\new.h(60) : error C2065: '_In_opt_
  2. 基于tornado实现web camera
  3. Python3之旅之计算机基础知识
  4. C/C++冷门知识总结
  5. 【无标题】怎么申请3A认证?
  6. Setting property ‘source‘ to ‘org.eclipse.jst.jee.server
  7. 数据库DB之MySQLOracle
  8. 分布式 —— 基于Raft算法的KV服务
  9. 人工智能调研报告汇总
  10. P2615 神奇的幻方