java 将一个正整数翻译成人民币大写的读法

程序如下:

  1 import java.lang.StringBuffer;
  2 /**
  3 给定一个浮点数,将其装换成人民币大写的读法
  4 88.5:捌十捌元零伍角
  5 */
  6 public class Num2Rmb
  7 {
  8     private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
  9
 10     //将一个浮点数分解成整数部分和小数部分,小数部分保留两位小数
 11     private String[] divide(double num)
 12     {
 13         long zheng=(long)num;
 14         long xiao=Math.round((num-zheng)*100);
 15         return new String[]{zheng+"",String.valueOf(xiao)};
 16     }
 17
 18
 19     private String toHanStr(String numStr)
 20     {
 21         String str="";
 22         //先转换正数
 23         int numLen=numStr.length();
 24         if(numLen>9)
 25         {
 26             System.out.println("输入的浮点数的正数部分的长度不能超过9,最大为9.");
 27             return "";
 28         }
 29         for(int i=0;i<numLen;i++)
 30         {
 31             int number= numStr.charAt(i)-48;
 32             str+=hanArr[number];
 33         }
 34         //给正数部分添加单位
 35         /**
 36         1 2 3 4 5 6 7 8 9
 37         1亿2千3百4十5万6千7百8十9
 38         */
 39         String[] unit=new String[]{"亿","千","百","十","万"};
 40         String newStr="";
 41         switch(numLen)
 42         {
 43             case 9:
 44                 for(int i=0;i<numLen;i++)
 45                 {
 46                     //取字符
 47                     char ch=str.charAt(i);
 48                     if(i==0)
 49                         newStr+=ch+unit[0];
 50                     if(i==1)
 51                         newStr+=ch+unit[1];
 52                     if(i==2)
 53                         newStr+=ch+unit[2];
 54                     if(i==3)
 55                         newStr+=ch+unit[3];
 56                     if(i==4)
 57                         newStr+=ch+unit[4];
 58                     if(i==5)
 59                         newStr+=ch+unit[1];
 60                     if(i==6)
 61                         newStr+=ch+unit[2];
 62                     if(i==7)
 63                         newStr+=ch+unit[3];
 64                     if(i==8)
 65                         newStr+=ch;
 66                 }
 67                 break;
 68             case 8://12345678
 69                 for(int i=0;i<numLen;i++)
 70                 {
 71                     //取字符
 72                     char ch=str.charAt(i);
 73                     if(i==0)
 74                         newStr+=ch+unit[1];
 75                     if(i==1)
 76                         newStr+=ch+unit[2];
 77                     if(i==2)
 78                         newStr+=ch+unit[3];
 79                     if(i==3)
 80                         newStr+=ch+unit[4];
 81                     if(i==4)
 82                         newStr+=ch+unit[1];
 83                     if(i==5)
 84                         newStr+=ch+unit[2];
 85                     if(i==6)
 86                         newStr+=ch+unit[4];
 87                     if(i==7)
 88                         newStr+=ch;
 89                 }
 90                 break;
 91             case 7://1234567
 92                 for(int i=0;i<numLen;i++)
 93                 {
 94                     //取字符
 95                     char ch=str.charAt(i);
 96                     if(i==0)
 97                         newStr+=ch+unit[2];
 98                     if(i==1)
 99                         newStr+=ch+unit[3];
100                     if(i==2)
101                         newStr+=ch+unit[4];
102                     if(i==3)
103                         newStr+=ch+unit[1];
104                     if(i==4)
105                         newStr+=ch+unit[2];
106                     if(i==5)
107                         newStr+=ch+unit[3];
108                     if(i==6)
109                         newStr+=ch;
110                 }
111                 break;
112             case 6://123456
113                 for(int i=0;i<numLen;i++)
114                 {
115                     //取字符
116                     char ch=str.charAt(i);
117                     if(i==0)
118                         newStr+=ch+unit[3];
119                     if(i==1)
120                         newStr+=ch+unit[4];
121                     if(i==2)
122                         newStr+=ch+unit[1];
123                     if(i==3)
124                         newStr+=ch+unit[2];
125                     if(i==4)
126                         newStr+=ch+unit[4];
127                     if(i==5)
128                         newStr+=ch;
129                 }
130                 break;
131             case 5://12345
132                 for(int i=0;i<numLen;i++)
133                 {
134                     //取字符
135                     char ch=str.charAt(i);
136                     if(i==0)
137                         newStr+=ch+unit[4];
138                     if(i==1)
139                         newStr+=ch+unit[1];
140                     if(i==2)
141                         newStr+=ch+unit[2];
142                     if(i==3)
143                         newStr+=ch+unit[3];
144                     if(i==4)
145                         newStr+=ch;
146                 }
147                 break;
148             case 4://1234
149                 for(int i=0;i<numLen;i++)
150                 {
151                     //取字符
152                     char ch=str.charAt(i);
153                     if(i==0)
154                         newStr+=ch+unit[1];
155                     if(i==1)
156                         newStr+=ch+unit[2];
157                     if(i==2)
158                         newStr+=ch+unit[3];
159                     if(i==3)
160                         newStr+=ch;
161                 }
162                 break;
163             case 3://123
164                 for(int i=0;i<numLen;i++)
165                 {
166                     //取字符
167                     char ch=str.charAt(i);
168                     if(i==0)
169                         newStr+=ch+unit[2];
170                     if(i==1)
171                         newStr+=ch+unit[3];
172                     if(i==2)
173                         newStr+=ch;
174                 }
175                 break;
176             case 2://12
177                 for(int i=0;i<numLen;i++)
178                 {
179                     //取字符
180                     char ch=str.charAt(i);
181                     if(i==0)
182                         newStr+=ch+unit[3];
183                     if(i==1)
184                         newStr+=ch;
185                 }
186                 break;
187             case 1:
188                 newStr+=str;
189                 break;
190             default:
191                 break;
192         }
193         newStr+="元";
194         String endStr="";
195         StringBuffer sb=new StringBuffer(newStr);
196         //处理转换后的字符串里面多个零的情况,寄将零后面的单位去掉
197         for(int j=0;j<newStr.length();j++)
198         {
199             char ch=newStr.charAt(j);
200             if(ch==‘零‘)
201             {
202                 sb.replace(j+1,j+2,"*");
203             }
204
205         }
206         //if(index>0)//
207         endStr=sb.toString().replace("*","");
208
209         StringBuffer sb0=new StringBuffer(endStr);
210         int dou=sb0.toString().indexOf("零零");
211         if(dou>0)
212         {
213             sb0.replace(dou,dou+1,"");
214         }
215         return sb0.toString();
216
217     }
218
219     public static void main(String[] args)
220     {
221         StringBuffer sb=new StringBuffer("abbcdf");
222         int index0=sb.toString().indexOf("bb");
223         System.out.println(index0);
224         sb.replace(index0,index0+2,"m");
225         System.out.println(sb.toString());
226         String s="abcd";
227         int index=s.indexOf("f");
228         System.out.println(index);
229         Num2Rmb nr=new Num2Rmb();
230         String[] numStr= nr.divide(100345678.25);
231         String str= nr.toHanStr(numStr[0]);
232         System.out.println(str);
233     }
234 }

运行效果如下:

				
时间: 2024-08-03 17:54:17

java 将一个正整数翻译成人民币大写的读法的相关文章

爱根,明天就能见到你了!好!亢!奋!闲来无聊,将一个正整数分解成质因数!

1 #闲来无聊,将一个正整数分解成质因数,例如900=2*3*3*3*5*5. 2 3 #1.用while循环结合for循环做. 4 # while True: 5 # num=input("input a num:") #输入数字. 6 # if num: #如果输入了: 7 # num=int(num) #转化为字符串. 8 # List=[str(num),"="] #先将这个数字加到列表开头,创造输出格式. 9 # while num>=2: #当这个

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

java程序---将一个浮点数转换成人民币读法

代码如下: <span style="font-size:18px;">package test; import java.util.Scanner; //将输入的浮点型钱数,转成人民币读法 public class Num2Rmb { private static double num; private long zheng,xiao; private String[] hanArr={"零","壹","贰",&

Java实现人民币大写精讲

想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到分 经典测试数据: 0 希望转换出来的结果为: 零元零角零分 1234 希望转换出来的结果为: 壹仟贰佰叁拾肆元零角零分 9999 希望转换出来的结果为: 玖仟玖佰玖拾玖元零角零分 1234.5 希望转换出来的结果为: 壹仟贰佰叁拾肆元伍角零分 1234.9 希望转换出来的结果为: 壹仟贰佰叁拾肆元

把Scheme翻译成Java和C++的工具

一.为什么要写这个工具? 公司内容有多个项目需要同一个功能,而这些项目中,有的是用Java的,有的是用C++的,同时由于某些现实条件限制,无法所有项目都调用统一的服务接口(如:可能运行在无网络的情况下),所以可选方案有两种: a.分别用Java和C++实现两套一样的功能. b.实现一个生成工具,用来生成同一种逻辑的Java和C++代码. …… 二.本文不会有的内容 我不希望在一篇技术文章中涉及到任何业务,以及为避免任何形式的公司敏感信息的泄露,所以本文中不会出现这个工具中的关键代码,即: a.这

Java实现将一个正整数分解质因数

* 题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. * 分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:  *(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可.  *(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步.  *(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步.  *这个题目很明显是要用递归算法来实现的,打印"*"有些技巧,但也

如何把一个正整数分解成质因数相乘(java)

package com.hpu.bai; /** * 此程序用来把一个正整数分解成质因数相乘 如 20 = 2*2*5: * @author bai * */ public class Byprime { public static int prime(int m){ int k =2;int count =0; System.out.print(m+"="); while(k<=m){ if(k == m){ System.out.print(m); count+=1; bre

java将中文转换成英文并支持首字母大写

原文:java将中文转换成英文并支持首字母大写 源代码下载地址:http://www.zuidaima.com/share/1563120428403712.htm 之前看到有牛牛发布过这一个代码,但是他写的那一个代码只是纯转换,并不能满足太多的需求.今天正好工作时遇到了这一个问题,需求把首字母变为大写.参考了一些代码演变而成的.希望大家以后可以用到. 这是事例图 这是结果图. 版权声明:本文为博主原创文章,未经博主允许不得转载.

java中为什么把Checked Exception翻译成受检的异常?

6.Checked Exception(受检的异常) (视频下载) (全部书籍) 马克-to-win:为什么我大胆的把Checked Exception翻译成受检的异常?因为这类异常,编译器检查发现到它后会强令你catch它或throws它(我们之后讲),马克-to-win:而相对于本节前面我们提到的各种比如ArithmeticException,都是unchecked exception(不受检)的异常,unchecked异常都是RuntimeException或者它的子类.马克-to-win