package test;
/*** 写一个方法,输入String str,如: "¥1032.56"  * 请转换为 如下样式:壹千零叁拾贰元五角六分零厘    版本2.0                   */
public class Money {/**目前只认万万亿以内的数字,超过这个数字将无法读出来*/public static String str="¥12_1891_3225_1675.56";public static char[] hz={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};public static char[] jfl={'角','分','厘'};public static char[] unit={'元','拾','佰','仟','万','亿'};public static void main(String[] args) {String str2=str.replace("_", "");String prefix=str2.split("\\.")[0].substring(1,str2.split("\\.")[0].length());String suffix=str2.split("\\.")[1];System.out.println("prefex:"+prefix +" \nsuffix:"+suffix);String utimateRes=(dealInteger(prefix)+dealDecimal(suffix)).replaceAll("零+", "零");/*修改的地方,修复了整数区域读0的bug*/for(int i=0;i<unit.length;i++){utimateRes=utimateRes.replaceAll("零"+unit[i], String.valueOf(unit[i]));  }/*修改的地方 ,修复了读0角0分0厘的bug*/for(int i=0;i<jfl.length;i++){utimateRes=utimateRes.replaceAll("零"+jfl[i], "零").replaceAll("零+", "零").replaceAll("零$","");    }System.out.println("最终结果 "+str+":"+utimateRes); //¥12_1891_3225_1675.56:壹拾贰万壹千捌百玖拾壹亿叁千贰百贰拾伍万壹千陆百柒拾伍元伍角陆分 }/*** 处理整数* @return*/public static String dealInteger(String prefix){String resQian="";String resWan="";String resYi="";String resQwy="";/*修改的地方 添加了千万亿级别*/if(prefix.length()>=12){String qwy=prefix.substring(0,prefix.length()-12);System.out.println("qwy:"+qwy);resQwy=dealfor(qwy,"万");        }/*亿级别*/if(prefix.length()>=8){String yi= prefix.length()<=12?prefix.substring(0,prefix.length()-8):prefix.substring(prefix.length()-12,prefix.length()-8);System.out.println("yi:"+yi);    resYi="0000".equals(yi)?"亿":dealfor(yi,"亿");}/*万级别*/if(prefix.length()>=5){String wan= prefix.length()<=8?prefix.substring(0,prefix.length()-4):prefix.substring(prefix.length()-8,prefix.length()-4);System.out.println("wan:"+wan);/*修改的地方 处理当前为4个0的情况*/resWan="0000".equals(wan)?"":dealfor(wan,"万");} /*千级别*/if(prefix.length()>=0){String qian=prefix.length()<=4? prefix.substring(0,prefix.length()):prefix.substring(prefix.length()-4,prefix.length());System.out.println("qian:"+qian);/*修改的地方 处理当前为4个0的情况*/resQian="0000".equals(qian)||"0".equals(qian)?"":dealfor(qian,"元");}   return resQwy+resYi+resWan+resQian;  }/*** 用于处理小数* @param suffix* @return*/public static String dealDecimal(String suffix){String res="";for(int i=0;i<suffix.length();i++){res+=String.valueOf(hz[Integer.valueOf(String.valueOf(suffix.charAt(i)))])+String.valueOf(jfl[i]);}return res;}/*** 用于处理重复部分*/public static String dealfor(String str,String flag){String resStr="";for(int i=0;i<str.length();i++){String zero=str.charAt(i)!='0'?String.valueOf(unit[str.length()-i-1]):"";if(i==str.length()-1){if(str.charAt(i)=='0')resStr+=flag;elseresStr+=String.valueOf(hz[Integer.valueOf(String.valueOf(str.charAt(i)))])+flag;}else{resStr+=String.valueOf(hz[Integer.valueOf(String.valueOf(str.charAt(i)))])+zero;} }return resStr;}
}

可能上面的程序运行某些条件时存在bug,大家找出来后,可以在下方留言哟、

去银行面试可能会遇到这种问题,但是一般就是问你思路吧,如果是直接敲得话怕是一两个小时解决不了额、毕竟还有好多比较注意细节的地方,一个bug可能就会卡半天,我也是初学java,今天老师给我们出的这个题,作为加分的拔高题,我用了大概三个小时写出来的,实现的方法可能有点绕,有更好的方法的大虾可以在评论区言,这里面库函数使用的比较多,所以依赖也比较大,存粹是一些java库的基本操作,没什么技术含量,如果有对你有帮助还请点个赞......

java实现银行存款问题,字符串型的数字转为银行所用单位('零','壹','贰','叁','肆','伍','陆','柒','捌','玖')相关推荐

  1. 用户输入0-9数字,分别输出零 壹 贰 叁 肆 伍 陆 柒 捌 玖

    #include<iostream> #include <Windows.h> #include <string> using namespace std; int ...

  2. python 表示金额时,将中文数字的大写的壹贰叁肆伍转换为阿拉伯数字:rmbTrans.trans

    在处理表格或word文档时,有时候像金额这种数据,在比较正式的情况下会写成中文的形式,比如壹万叁仟陆佰伍拾元贰角这种,我们如何将它转换为阿拉伯数字表示的1365.2元这种形式呢? 此处介绍一个函数 r ...

  3. angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......

    作者 | 雷哥 编辑 | 小西瓜 职场中,大家是否遇到这样的情况, 需要把数字"1,2,3......" 转换为 大写的"壹贰叁...",大家都有哪些方法可以实 ...

  4. java利用正则截取字符串中的数字

    java利用正则截取字符串中的数字 String str = "xxx第47297章33";String regex = "\\d*";Pattern p = ...

  5. java判断输入的字符串是否为数字

    java判断输入的字符串是否为数字 1. 使用Character.isDight(),利用循环一个个字符判断 Character.isDight(char c) //如果c是数字,返回true,否则返 ...

  6. Loner_li 机试题 将数字 例如12345.7895”,用程序实现显示壹万贰仟叁佰肆拾伍圆柒角玖分的方式

    class Program {         //"12345.7895",用程序实现显示"壹万贰仟叁佰肆拾伍圆柒角玖分"的方式           stat ...

  7. java怎么一段字符串全为数字_java 如何判断一个字符串是数字

    断字符串是不是数字,大家可能会用一些java自带的方法,也有可能用其他怪异的招式,比如判断是不是整型数字,将字符串强制转换成整型,不是数字的就会抛出错误,那么就不是整型的了.但本文介绍的比较好的两种方 ...

  8. java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?

    我们将检查字符串是否为数字-借助逻辑,我们将解决此问题,第一步,我们将使用一个名为str的字符串变量,并将任何值存储在其中. 在第二步中,我们将使用一个名为str_numeric的布尔变量,该变量存储 ...

  9. java 判断数字_如何在java中判断一个字符串是否是数字

    前言 数字在某些领域经常用字符串来进行表示和传递.那么我们如何判断一个字符串是否是数字呢?今天我们来探讨一下这个话题. 空字符和null 首先我们可以很清晰的知道空字符""和nul ...

最新文章

  1. 深入理解Redis主键失效原理及实现机制
  2. 无偏方差为什么除以n-1
  3. linux 查询线程是否结束_批量随机键值查询测试
  4. 实验二 网络嗅探与欺骗
  5. vue页面跳转后返回原页面初始位置
  6. node遍历给定目录下特定文件,内容合并到一个文件
  7. 基于OneAPM的Web系统性能监测
  8. c语言中 程序各步作用,c程序的上机执行过程_上机运行C程序的步骤与方法
  9. 读写分离架构的两种方式及问题
  10. 神剧《切尔诺贝利》引发的技术思考:如何避免下一次核灾难?
  11. 【锂电池健康状态预测】基于matlab BP神经网络锂电池健康状态预测【含Matlab源码 688期】
  12. gpu 加速矩阵 深度学习_GPU如何加速深度学习
  13. 2021安徽安全员B证考试多选练习题库
  14. 推荐一个语音机器人项目
  15. linux开机不运行桌面快捷方式,Android 开机自动运行和添加删除桌面快捷方式
  16. Java第三章(数组)
  17. 设置Android应用全屏显示(隐藏手机状态栏)
  18. 如何锻炼出强悍的分析能力?
  19. 华山论剑闲谈iOS中闪光灯的使用
  20. 如何最有效的采集APP数据

热门文章

  1. 最小公约数(大整数乘除法,C++)
  2. cc2530自组网的网络结构是什么?在哪里可以修改
  3. postgresql + postgis 离线安装
  4. Android淘宝三方登陆
  5. spring boot的启动与配置
  6. 基于JAVA某日杂商店进销存管理系统设计计算机毕业设计源码+数据库+lw文档+系统+部署
  7. AD7616的国产替代方案—ADCS16162(16位16通道同步采样ADC)
  8. CSDN网站中的版权投诉的标准
  9. 使用AFNetworking
  10. 【Flutter】四十一、Flutter解决沉浸式状态栏——SafeArea