程序如下:

 import java.lang.StringBuffer;
/**
给定一个浮点数,将其装换成人民币大写的读法
88.5:捌十捌元零伍角
*/
public class Num2Rmb
{
private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; //将一个浮点数分解成整数部分和小数部分,小数部分保留两位小数
private String[] divide(double num)
{
long zheng=(long)num;
long xiao=Math.round((num-zheng)*100);
return new String[]{zheng+"",String.valueOf(xiao)};
} private String toHanStr(String numStr)
{
String str="";
//先转换正数
int numLen=numStr.length();
if(numLen>9)
{
System.out.println("输入的浮点数的正数部分的长度不能超过9,最大为9.");
return "";
}
for(int i=0;i<numLen;i++)
{
int number= numStr.charAt(i)-48;
str+=hanArr[number];
}
//给正数部分添加单位
/**
1 2 3 4 5 6 7 8 9
1亿2千3百4十5万6千7百8十9
*/
String[] unit=new String[]{"亿","千","百","十","万"};
String newStr="";
switch(numLen)
{
case 9:
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[0];
if(i==1)
newStr+=ch+unit[1];
if(i==2)
newStr+=ch+unit[2];
if(i==3)
newStr+=ch+unit[3];
if(i==4)
newStr+=ch+unit[4];
if(i==5)
newStr+=ch+unit[1];
if(i==6)
newStr+=ch+unit[2];
if(i==7)
newStr+=ch+unit[3];
if(i==8)
newStr+=ch;
}
break;
case 8://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[1];
if(i==1)
newStr+=ch+unit[2];
if(i==2)
newStr+=ch+unit[3];
if(i==3)
newStr+=ch+unit[4];
if(i==4)
newStr+=ch+unit[1];
if(i==5)
newStr+=ch+unit[2];
if(i==6)
newStr+=ch+unit[4];
if(i==7)
newStr+=ch;
}
break;
case 7://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[2];
if(i==1)
newStr+=ch+unit[3];
if(i==2)
newStr+=ch+unit[4];
if(i==3)
newStr+=ch+unit[1];
if(i==4)
newStr+=ch+unit[2];
if(i==5)
newStr+=ch+unit[3];
if(i==6)
newStr+=ch;
}
break;
case 6://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[3];
if(i==1)
newStr+=ch+unit[4];
if(i==2)
newStr+=ch+unit[1];
if(i==3)
newStr+=ch+unit[2];
if(i==4)
newStr+=ch+unit[4];
if(i==5)
newStr+=ch;
}
break;
case 5://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[4];
if(i==1)
newStr+=ch+unit[1];
if(i==2)
newStr+=ch+unit[2];
if(i==3)
newStr+=ch+unit[3];
if(i==4)
newStr+=ch;
}
break;
case 4://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[1];
if(i==1)
newStr+=ch+unit[2];
if(i==2)
newStr+=ch+unit[3];
if(i==3)
newStr+=ch;
}
break;
case 3://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[2];
if(i==1)
newStr+=ch+unit[3];
if(i==2)
newStr+=ch;
}
break;
case 2://
for(int i=0;i<numLen;i++)
{
//取字符
char ch=str.charAt(i);
if(i==0)
newStr+=ch+unit[3];
if(i==1)
newStr+=ch;
}
break;
case 1:
newStr+=str;
break;
default:
break;
}
newStr+="元";
String endStr="";
StringBuffer sb=new StringBuffer(newStr);
//处理转换后的字符串里面多个零的情况,寄将零后面的单位去掉
for(int j=0;j<newStr.length();j++)
{
char ch=newStr.charAt(j);
if(ch=='零')
{
sb.replace(j+1,j+2,"*");
} }
//if(index>0)//
endStr=sb.toString().replace("*",""); StringBuffer sb0=new StringBuffer(endStr);
int dou=sb0.toString().indexOf("零零");
if(dou>0)
{
sb0.replace(dou,dou+1,"");
}
return sb0.toString(); } public static void main(String[] args)
{
StringBuffer sb=new StringBuffer("abbcdf");
int index0=sb.toString().indexOf("bb");
System.out.println(index0);
sb.replace(index0,index0+2,"m");
System.out.println(sb.toString());
String s="abcd";
int index=s.indexOf("f");
System.out.println(index);
Num2Rmb nr=new Num2Rmb();
String[] numStr= nr.divide(100345678.25);
String str= nr.toHanStr(numStr[0]);
System.out.println(str);
}
} 运行效果如下:


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

  1. 题目要求:建立一个类Str,将一个正整数转换成相应的字符串,例如整数3456转换为字符串"3456".

    题目要求:建立一个类Str,将一个正整数转换成相应的字符串,例如整数3456转换为字符串"3456". 关键:怎么将一个数字转换为字符? [cpp] view plaincopy ...

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

    //将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...

  3. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  4. 将一个浮点数转换成人民币读法字符串(java)

    public class Num2Rmb   {       private String[] hanArr = {"零" , "壹" , "贰&qu ...

  5. java将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    首先我们的算法是:例如 输入的是 90 1.找到90的最小公约数(1除外)是 2 2.然后把公约数 2 输出 3.接着用 90 / 2 = 45 (如果这里是素数,就结束,否则继续找最小公约数) 4. ...

  6. java将一个list转换成一个String,中间用分隔符隔开

    List sn=[123,1231,1231,231] sn.toString();//[123,1231,1231,231] sn.join(',').toString();//123,1231,1 ...

  7. Java实现人民币大写精讲

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  8. Java实现人民币大写代码解析

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  9. Java将一个字符串的首位改为大写后边改为小写的实现,String

    Java将一个字符串的首位改为大写后边改为小写的实现,String 思路: 获取首字母, charAt(0) substring(0,1) 转成大写 toUpperCase() 转大写hellO=== ...

随机推荐

  1. 一百一十三:CMS系统之前台注册界面

    html {% from 'common/_macros.html' import static %}<!DOCTYPE html><html lang="en" ...

  2. 一百零八:CMS系统之封装权限判断功能

    在用户模型下定义属性和方法,用于判断用户的权限 @propertydef permissions(self): """ 返回用户拥有的所有权限 ""& ...

  3. MVC自定义视图

    编写自定义模板,以单选按钮为例   1.在Shared新建模板视图(文件夹名必须为EditorTemplates)       2.编写模板代码   @model bool   <table&g ...

  4. launchImage设置后在启动时无法显示

    有人问我他的APP设置了启动页,然后居然不显示.....我觉得应该不可能啊,然后我自己再次实现了一下设置启动页,这个问题好像以前从来没有注意过,也没有很深刻的掌握APP启动页的设置和注意事项,今天遇到 ...

  5. VueRouter爬坑第三篇-嵌套路由

    VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境. ...

  6. 2.React 生命周期函数

    什么是生命周期函数:在某一时刻组件会自动调用执行的函数. import React,{ Component,Fragment } from 'react' class Note extends Com ...

  7. Django-DRF(路由与扩展功能)

    一. 视图集与路由的使用 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update( ...

  8. Django-DRF(视图相关)

    drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST ...

  9. Go语言中切片的内部实现和基础功能

    切片是一种数据结构,这种数据结构便于使用和管理数据集合.切片是围绕动态数组的概念构建的,可以按需自动增长和缩小.切片的动态增长是通过内置函数append来实现的.这个函数可以快速且高效的增长切片.还可 ...

  10. 部署kubernetes-prometheus和用kubespray部署kubernetes后修改kubelet的

    1.kubespray的配置文件 /opt/kubespray/inventory/mycluster/group_vars/all/all.yml# kube_read_only_port: 102 ...