[JAVA]金额小写转大写
java转换小写金额为大写金额
java转换⼩写⾦额为⼤写⾦额 找⼯作中,遇到⼀个java⾦额转换的题⽬,在⽹上查找了⼀些资料,看了不是太容易理解,理解能⼒不好。
在此分享在吸取⼤神们处理⽅式的基础上⾃⼰整理的⼀个⼩程序,希望可以帮助到⼤家,也是⾃⼰的⼀个笔记。
代码如下:import java.math.BigDecimal;public class Convert {static String cashUnitLeft[] = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟","亿", "拾", "佰", "仟", "万" };static String cashUnitRight[] = { "⾓", "分", "厘" };static String upperNumber[] = { "零", "壹", "贰", "弎", "肆", "伍", "陆", "柒","捌", "玖" };public static String convert(BigDecimal money) {String smoney = money.toString();try{if (smoney.indexOf(".") != -1) { //把数值分为整数型和带⼩数的数值分开处理。
String left = smoney.substring(0, smoney.indexOf("."));String right = smoney.substring(smoney.indexOf(".") + 1);String result = convertLeft(left) + convertRight(right);return result;} else {return convertLeft(smoney);}}catch(IllegalArgumentException e){System.out.println(e.getMessage());System.out.println("请输⼊转换范围内现⾦");return null;}}private static String convertLeft(String left) { //处理整数部分。
java不失精度及金额大小写转换
java不失精度及金额大小写转换1.不失精度的数据运算功能:在数据运算过程中将小数点后的数据无失真的进行运算,保证了数据的精确性。
实现方法:import java.math.BigDecimal;public class ArithUtil {//默认除法运算精度private static final int DEF_DIV_SCALE = 10;//这个类不能实例化private ArithUtil(){}/*** @方法名: add** @方法概要: 提供精确的加法运算** @param@param v1 被加数* @param@param v2 加数** @return double 两个参数的和** @date*/public static double add(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doubleValue();}/*** @方法名: sub** @方法概要: 提供精确的减法运算** @param@param v1 被减数* @param@param v2 减数** @return double 两个参数的差** @throws抛出的异常** @date */public static double sub(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue();}/*** @方法名: mul** @方法概要: 提供精确的乘法运算** @param v1 被乘数* @param v2 乘数** @return double 两个参数的积** @throws** @date */public static double mul(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doubleValue();}/*** @方法名: div** @方法概要: 提供(相对)精确的除法运算,当发生除不尽的情况时,精确的小数点以后10位* 以后的数字四舍五入* @param@param v1 被除数* @param@param v2 除数** @return double 两个参数的商** @throws** @date */public static double div(double v1,double v2){return div(v1,v2,DEF_DIV_SCALE);}/*** @方法名: div** @方法概要: 提供(相对)精确的除法运算* 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入* @param@param v1 被除数* @param@param v2 除数* @param@param scale 表示需要精确到小数点以后几位** @return double 两个参数的商** @throws** @date*/public static double div(double v1,double v2,int scale){ if(scale<0){throw new IllegalArgumentException("精确数必须是正整数或零");}BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } }2.数字金额转换功能:将小写的数字金额转换为票据数字public class ChangeCapNum {// 整数部分private static String integerPart;// 小数部分private static String floatPart;// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};// 供分级转化的数组,因为各个实例都要使用所以设为静态private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};/*** @方法名: dataInit** @方法概要:将阿拉伯数字形式的字符串传入*/private static void dataInit(String original){// 成员变量初始化integerPart="";floatPart="";if(original.contains(".")){// 如果包含小数点int dotIndex=original.indexOf("."); integerPart=original.substring(0,dotIndex); floatPart=original.substring(dotIndex+1);}else{// 不包含小数点integerPart=original;}}/*** @方法名: getCnString** @方法概要: 取得大写形式的字符串*/public static String getCnString(String original){ //将阿拉伯数字形式的字符串传入dataInit(original);// 因为是累加所以用StringBuffer StringBuffer sb=new StringBuffer();// 整数部分处理for(int i=0;i<integerpart.length();i++){< p=""> int number=getNumber(integerPart.charAt(i)); sb.append(cnNumbers[number]);sb.append(series[integerPart.length()-1-i]);}// 如果整数部分后面是零则去除for(int i=integerPart.length()-1;i>0;i--){if(integerPart.charAt(i)=='0'){sb.delete(sb.length()-2, sb.length());}else{sb.append("元");break;}}// 小数部分处理if(floatPart.length()>0){if(Integer.parseInt(floatPart)!=0){//去除"元"sb.deleteCharAt(sb.length()-1);sb.append("点");for(int i=0;i<floatpart.length();i++){< p=""> int number=getNumber(floatPart.charAt(i)); sb.append(cnNumbers[number]);}sb.append("元");}}//加"整"s b.append("整");// 返回拼接好的字符串return sb.toString();}/*** @方法名: getNumber** @方法概要: 将字符形式的数字转化为整形数字** @param c 要转化的数字*/private static int getNumber(char c){ String str=String.valueOf(c);return Integer.parseInt(str);}}</floatpart.length();i++){<></integerpart.length();i++){<>。
java实现人民币数字转大写(转)
java实现⼈民币数字转⼤写(转)希望转换出来的结果为:零元零⾓零分1234希望转换出来的结果为:壹仟贰佰叁拾肆元零⾓零分9999希望转换出来的结果为:玖仟玖佰玖拾玖元零⾓零分1234.5希望转换出来的结果为:壹仟贰佰叁拾肆元伍⾓零分1234.9希望转换出来的结果为:壹仟贰佰叁拾肆元玖⾓零分1234.56希望转换出来的结果为:壹仟贰佰叁拾肆元伍⾓陆分1234.99希望转换出来的结果为:壹仟贰佰叁拾肆元玖⾓玖分1234.994希望转换出来的结果为:壹仟贰佰叁拾肆元玖⾓玖分1234.999希望转换出来的结果为:壹仟贰佰叁拾伍元零⾓零分999999999999.999希望转换出来的结果为:数据过⼤,⽆法进⾏转换,请重新输⼊!package com.tfj.algorithm;import java.util.Scanner;public class RenMingBi {private boolean zero;String[] strHan = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };String[] moneyCount = { "", "拾", "佰", "仟" };RenMingBi() {zero = false;}private String[] divide(double digitalRmbValue) {// 处理整数long intPart = (long) (digitalRmbValue);// 处理⼩数,把⼩数转换成整数形式处理,并进⾏四舍五⼊,此时⼩数四舍五⼊之后为100的应该另外加⼀层处理long decimalPart = Math.round((double) Math.round((digitalRmbValue - intPart) * 10000) / 100);// System.out.println("整数部分为:" + intPart + "⼩数部分为:" + (digitalRmbValue - intPart));if (decimalPart == 100) {intPart += 1;}// System.out.println("四舍五⼊之后整数部分为:" + intPart + "⼩数部分为:" + decimalPart);String strIntPart = "";if (intPart == 0)strIntPart = "0";else {strIntPart = "" + intPart;}String strDecimalPart = "";if (decimalPart < 10 && decimalPart >= 0)strDecimalPart = "0" + decimalPart;else {strDecimalPart = "" + decimalPart;}// 处理输⼊为0的时候if (intPart == 0 && decimalPart == 0) {zero = true;}// System.out.println("准换为String后,整数部分为:" + strIntPart + "⼩数部分为:" + strDecimalPart);return new String[] { strIntPart, strDecimalPart };}// ⽤来转换⼩数部分private String transDecimal(String str) {if (str.equals("100") || str.equals("00")) {return "零⾓零分";} else {String strResult;char[] strRmb = new char[20];strRmb = str.toCharArray();if (strRmb[0] == '0' && strRmb[1] == '0') {strResult = "";} else {int dm = strRmb[0] - '0';int dn = strRmb[1] - '0';strResult = strHan[dm] + "⾓" + strHan[dn] + "分";}return strResult;}}// ⽤来转换整数部分private String transInt(String str) {char[] firstFourBitRmb = new char[20];firstFourBitRmb = str.toCharArray();int len = firstFourBitRmb.length;String strResult = "";for (int i = 0; i < len; i++) {/*** 这⾥开启之后会显⽰成通俗易懂的格式,例如1001,会转化为:壹仟零壹元,⽽不是:壹仟零佰零拾壹元,但我希望得到的是后⾯这种,因为发票所需显⽰的就是后⾯这种 **/// if (firstFourBitRmb[i] == '0' && i < len) {// boolean zeroFlag = false;// while (i < len && firstFourBitRmb[i] == '0') {// zeroFlag = true;// i++;// }// if (i != len && zeroFlag == true)// strResult += "零";// i--;// } else {// int m = firstFourBitRmb[i] - '0';// strResult += strHan[m] + moneyCount[len - i - 1];// }int m = firstFourBitRmb[i] - '0';strResult += strHan[m] + moneyCount[len - i - 1];}return strResult;}public String transComb() {String[] strTempRmb = new String[2];double strValue = 0D;Scanner sc = new Scanner(System.in);System.out.println("请输⼊具体⾦额,结果会精确到分:");strValue = sc.nextDouble();RenMingBi nr = new RenMingBi();strTempRmb = nr.divide(strValue);// 转换⼩数部分String result1 = nr.transDecimal(strTempRmb[1]);// 转换整数部分String result2 = "";int len = strTempRmb[0].length();if (len > 12)return "数据过⼤,⽆法进⾏转换,请重新输⼊!";else {if (len >= 9) {String strBit1 = strTempRmb[0].substring(0, len - 8);String strBit2 = strTempRmb[0].substring(len - 8, len - 4); String strBit3 = strTempRmb[0].substring(len - 4, len);String strResult1 = nr.transInt(strBit1) + "亿";String strResult2 = nr.transInt(strBit2) + "万";String strResult3 = nr.transInt(strBit3) + "元";result2 = strResult1 + strResult2 + strResult3;} else if (len >= 5) {String strBit1 = strTempRmb[0].substring(0, len - 4);String strBit2 = strTempRmb[0].substring(len - 4, len);String strResult1 = nr.transInt(strBit1) + "万";String strResult2 = nr.transInt(strBit2) + "元";result2 = strResult1 + strResult2;} else if (len >= 1) {if (nr.zero == true) {result2 = "零元";} elseresult2 = nr.transInt(strTempRmb[0]) + "元";}return result2 + result1;}}public static void main(String[] args) {RenMingBi rmb = new RenMingBi();while (true) {System.out.println(rmb.transComb());}}}。
Java工具类(一)财务金额小写数字转换中文大写工具类
Java⼯具类(⼀)财务⾦额⼩写数字转换中⽂⼤写⼯具类代码private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元⾓分";private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";private static final double MAX_VALUE = 9999999999999.99D;//⾦额⼤写功能转换public static String change(double v) {String head = "";if(v<0){head = "负";v = Math.abs(v);}if (v > MAX_VALUE){return "参数⾮法!";}long l = Math.round(v * 100);if (l == 0){return "零元整";}String strValue = l + "";// i⽤来控制数int i = 0;// j⽤来控制单位int j = UNIT.length() - strValue.length();String rs = "";boolean isZero = false;for (; i < strValue.length(); i++, j++) {char ch = strValue.charAt(i);if (ch == '0') {isZero = true;if (UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万' || UNIT.charAt(j) == '元') {rs = rs + UNIT.charAt(j);isZero = false;}} else {if (isZero) {rs = rs + "零";isZero = false;}rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);}}if (!rs.endsWith("分")) {rs = rs + "整";}rs = rs.replaceAll("亿万", "亿");return head+rs;}测试public static void main(String[] args) {System.out.println(digitUppercase(987654320.01));}结果玖亿捌千柒佰陆拾伍万肆千叁佰贰拾元零壹分。
将数字转为中文金额的大写方式Java版
将数字转为中文金额的大写方式(Java版)将数字转为中文金额的大写方式(Java版)/*** 程序目的:* 从命令行接收一个数,并将其转化为中文金额的大写方式* 例如123.45 --> 壹佰贰拾叁元肆角伍分* @author LovinChan** 看到网上有很多这样的例子程序,不过觉得很不满意。
有些程序我从命名上就觉得* 实在是不符合规范,程序里面的算法没有让人明白得很清楚的注释,读上去觉得有* 点难度,可读性不强。
而且很多程序还存在不少bug,随便一测就测出来了。
* 所以本人还是决定重新写一下这个程序,并且尽量做到消除不必要的bug。
这个程* 序我没有用什么很精妙的算法,不过用了一些Java类库中的类,像是正则表达式之类* 的东西。
由于本人对算法不怎么在行,在做转换操作的时候用的是很笨的方法。
望各位* 大虾海涵,呵呵。
** 程序的注释我尽量写得详细一点,如果觉得这个程序哪里有问题或者是哪里有改进的* 地方欢迎随时跟我交流。
* 我的msn:egg.chenlw@* QQ:543669516(注上为什么加我就可以了)* 我的blog:/egg_chen* 欢迎交流*/public class Trans2RMB {/*** 测试程序的可行性* @param args*/public static void main(String[] args) {System.out.println("\n--------将数字转换成中文金额的大写形式------------\n"); Trans2RMB t2r = new Trans2RMB();String s = t2r.cleanZero(t2r.splitNum(t2r.roundString(t2r.getNum())));// 如果转换过后是一个空串,则不输出屏幕if(!"".equals(s)) {System.out.println("转换成中文后为:" + s);;}System.out.println("\n---------------------------------------------");}/*** 从命令行接收一个数,在其中调用checkNum() 方法对其进行* 验证,并返回相应的值* @return 如果输入合法,返回输入的这个数*/private String getNum() {String s = null;System.out.println("请输入一个数字(精确到小数点后两位):");// 从命令行输入这个浮点数java.util.Scanner scanner = new java.util.Scanner(System.in);s = scanner.next();// 关闭这个Scannerscanner.close();// 判断用户输入是否合法// 若合法,返回这个值;若非法返回"0"if(this.checkNum(s)) {return s;} else {return "";}}/*** 判断用户输入的数据是否合法,用户只能输入大于零的数字,不能输入其它字符* @param s String* @return 如果用户输入数据合法,返回true,否则返回false*/private boolean checkNum(String s) {// 如果用户输入的数里有非数字字符,则视为非法数据,返回falsetry {float f = Float.valueOf(s);// 如果这个数小于零则视为非法数据,返回falseif(f < 0) {System.out.println("非法数据,请检查!");return false;}else {return true;}} catch (NumberFormatException e) {System.out.println("非法数据,请检查!");return false;}}/*** 把用户输入的数以小数点为界分割开来,并调用numFormat() 方法* 进行相应的中文金额大写形式的转换* 注:传入的这个数应该是经过roundString() 方法进行了四舍五入操作的* @param s String* @return 转换好的中文金额大写形式的字符串*/private String splitNum(String s) {// 如果传入的是空串则继续返回空串if("".equals(s)) {return "";}// 以小数点为界分割这个字符串int index = s.indexOf(".");// 截取并转换这个数的整数部分String intOnly = s.substring(0, index);String part1 = this.numFormat(1, intOnly);// 截取并转换这个数的小数部分String smallOnly = s.substring(index + 1);String part2 = this.numFormat(2, smallOnly);// 把转换好了的整数部分和小数部分重新拼凑一个新的字符串String newS = part1 + part2;return newS;}/*** 对传入的数进行四舍五入操作* @param s String 从命令行输入的那个数* @return 四舍五入后的新值*/private String roundString(String s) {// 如果传入的是空串则继续返回空串if("".equals(s)) {return "";}// 将这个数转换成double 类型,并对其进行四舍五入操作double d = Double.parseDouble(s);// 此操作作用在小数点后两位上d = (d * 100 + 0.5) / 100;// 将d 进行格式化s = new java.text.DecimalFormat("##0.000").format(d);// 以小数点为界分割这个字符串int index = s.indexOf(".");// 这个数的整数部分String intOnly = s.substring(0, index);// 规定数值的最大长度只能到万亿单位,否则返回"0"if(intOnly.length() > 13) {System.out.println("输入数据过大!(整数部分最多13位!)");return "";}// 这个数的小数部分String smallOnly = s.substring(index + 1);// 如果小数部分大于两位,只截取小数点后两位if(smallOnly.length() > 2) {String roundSmall = smallOnly.substring(0, 2);// 把整数部分和新截取的小数部分重新拼凑这个字符串s = intOnly + "." + roundSmall;}return s;}/*** 把传入的数转换为中文金额大写形式* @param flag int 标志位,1 表示转换整数部分,0 表示转换小数部分* @param s String 要转换的字符串* @return 转换好的带单位的中文金额大写形式*/private String numFormat(int flag, String s) {int sLength = s.length();// 货币大写形式String bigLetter[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 货币单位String unit[] = {"元", "拾", "佰", "仟", "万",// 拾万位到仟万位"拾", "佰", "仟",// 亿位到万亿位"亿", "拾", "佰", "仟", "万"}; String small[] = {"分", "角"};// 用来存放转换后的新字符串String newS = "";// 逐位替换为中文大写形式for(int i = 0; i < sLength; i ++) {if(flag == 1) {// 转换整数部分为中文大写形式(带单位)newS = newS + bigLetter[s.charAt(i) - 48] + unit[sLength - i - 1];} else if(flag == 2) {// 转换小数部分(带单位)newS = newS + bigLetter[s.charAt(i) - 48] + small[sLength - i - 1];}}return newS;}/*** 把已经转换好的中文金额大写形式加以改进,清理这个字* 符串里面多余的零,让这个字符串变得更加可观* 注:传入的这个数应该是经过splitNum() 方法进行处理,这个字* 符串应该已经是用中文金额大写形式表示的* @param s String 已经转换好的字符串* @return 改进后的字符串*/private String cleanZero(String s) {// 如果传入的是空串则继续返回空串if("".equals(s)) {return "";}// 如果用户开始输入了很多0 去掉字符串前面多余的'零',使其看上去更符合习惯while(s.charAt(0) == '零') {// 将字符串中的"零" 和它对应的单位去掉s = s.substring(2);// 如果用户当初输入的时候只输入了0,则只返回一个"零"if(s.length() == 0) {return "零";}}// 字符串中存在多个'零'在一起的时候只读出一个'零',并省略多余的单位/* 由于本人对算法的研究太菜了,只能用4个正则表达式去转换了,各位大虾别介意哈... */String regex1[] = {"零仟", "零佰", "零拾"};String regex2[] = {"零亿", "零万", "零元"};String regex3[] = {"亿", "万", "元"};String regex4[] = {"零角", "零分"};// 第一轮转换把"零仟", 零佰","零拾"等字符串替换成一个"零"for(int i = 0; i < 3; i ++) {s = s.replaceAll(regex1[i], "零");}// 第二轮转换考虑"零亿","零万","零元"等情况// "亿","万","元"这些单位有些情况是不能省的,需要保留下来for(int i = 0; i < 3; i ++) {// 当第一轮转换过后有可能有很多个零叠在一起// 要把很多个重复的零变成一个零s = s.replaceAll("零零零", "零");s = s.replaceAll("零零", "零");s = s.replaceAll(regex2[i], regex3[i]);}// 第三轮转换把"零角","零分"字符串省略for(int i = 0; i < 2; i ++) {s = s.replaceAll(regex4[i], "");}// 当"万"到"亿"之间全部是"零"的时候,忽略"亿万"单位,只保留一个"亿"s = s.replaceAll("亿万", "亿");return s;}}。
Java将数字金额转为大写中文金额
Java将数字⾦额转为⼤写中⽂⾦额本⽂实例为⼤家分享了Java如何将数字⾦额转为⼤写中⽂⾦额的具体代码,供⼤家参考,具体内容如下前⾔:输⼊数字⾦额参数,运⾏程序得到其对应的⼤写中⽂⾦额;例如:输⼊— 12.56,输出— 12.56:壹拾贰元伍⾓陆分;重点来了:本⼈亲测有效。
奉上代码:/***@Title: ConvertUpMoney* @Description: 将数字⾦额转为⼤写汉字⾦额* @date: 2019年6⽉18⽇下午10:52:27*/public class ConvertUpMoney {//⼤写数字private static final String[] NUMBERS = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};// 整数部分的单位private static final String[] IUNIT = {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};//⼩数部分的单位private static final String[] DUNIT = {"⾓","分","厘"};//转成中⽂的⼤写⾦额public static String toChinese(String str) {//判断输⼊的⾦额字符串是否符合要求if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {System.out.println("抱歉,请输⼊数字!");return str;}if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {return "零元";}//判断是否存在负号"-"boolean flag = false;if(str.startsWith("-")){flag = true;str = str.replaceAll("-", "");}str = str.replaceAll(",", "");//去掉","String integerStr;//整数部分数字String decimalStr;//⼩数部分数字//初始化:分离整数部分和⼩数部分if(str.indexOf(".")>0) {integerStr = str.substring(0,str.indexOf("."));decimalStr = str.substring(str.indexOf(".")+1);}else if(str.indexOf(".")==0) {integerStr = "";decimalStr = str.substring(1);}else {integerStr = str;decimalStr = "";}//beyond超出计算能⼒,直接返回if(integerStr.length()>IUNIT.length) {System.out.println(str+":超出计算能⼒");return str;}int[] integers = toIntArray(integerStr);//整数部分数字//判断整数部分是否存在输⼊012的情况if (integers.length>1 && integers[0] == 0) {System.out.println("抱歉,请输⼊数字!");if (flag) {str = "-"+str;}return str;}boolean isWan = isWan5(integerStr);//设置万单位int[] decimals = toIntArray(decimalStr);//⼩数部分数字String result = getChineseInteger(integers,isWan)+getChineseDecimal(decimals);//返回最终的⼤写⾦额 if(flag){return "负"+result;//如果是负数,加上"负"}else{return result;}}//将字符串转为int数组private static int[] toIntArray(String number) {int[] array = new int[number.length()];for(int i = 0;i<number.length();i++) {array[i] = Integer.parseInt(number.substring(i,i+1));}return array;}//将整数部分转为⼤写的⾦额public static String getChineseInteger(int[] integers,boolean isWan) {StringBuffer chineseInteger = new StringBuffer("");int length = integers.length;if (length == 1 && integers[0] == 0) {return "";}for(int i=0;i<length;i++) {String key = "";if(integers[i] == 0) {if((length - i) == 13)//万(亿)key = IUNIT[4];else if((length - i) == 9) {//亿key = IUNIT[8];}else if((length - i) == 5 && isWan) {//万key = IUNIT[4];}else if((length - i) == 1) {//元key = IUNIT[0];}if((length - i)>1 && integers[i+1]!=0) {key += NUMBERS[0];}}chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));}return chineseInteger.toString();}//将⼩数部分转为⼤写的⾦额private static String getChineseDecimal(int[] decimals) {StringBuffer chineseDecimal = new StringBuffer("");for(int i = 0;i<decimals.length;i++) {if(i == 3) {break;}chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));}return chineseDecimal.toString();}//判断当前整数部分是否已经是达到【万】private static boolean isWan5(String integerStr) {int length = integerStr.length();if(length > 4) {String subInteger = "";if(length > 8) {subInteger = integerStr.substring(length- 8,length -4);}else {subInteger = integerStr.substring(0,length - 4);}return Integer.parseInt(subInteger) > 0;}else {return false;}}//Testpublic static void main(String[] args) {String number = "12.56";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "1234567890563886.123";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "1600";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "156,0";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "-156,0";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "0.12";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "0.0";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "01.12";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "0125";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "-0125";System.out.println(number+": "+ConvertUpMoney.toChinese(number));number = "sdw5655";System.out.println(number+": "+ConvertUpMoney.toChinese(number));System.out.println(null+": "+ConvertUpMoney.toChinese(null));}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java小写转大写方法
java小写转大写方法Java是一种面向对象的编程语言,它具有跨平台、可移植性强、安全性高等特点,因此在软件开发领域得到了广泛应用。
在Java编程中,经常需要将字符串中的小写字母转换为大写字母,本文将介绍几种Java小写转大写的方法。
方法一:使用toUpperCase()方法Java中的String类提供了一个toUpperCase()方法,可以将字符串中的小写字母转换为大写字母。
该方法返回一个新的字符串,原字符串不会被修改。
示例代码:```String str = "hello world";String upperStr = str.toUpperCase();System.out.println(upperStr);```输出结果:```HELLO WORLD```方法二:使用ASCII码表ASCII码表是一种将字符映射为数字的编码方式,其中大写字母的ASCII码值比小写字母的ASCII码值小32。
因此,可以通过将小写字母的ASCII码值加上32来得到对应的大写字母的ASCII码值,然后将其转换为字符即可。
示例代码:```String str = "hello world";char[] charArray = str.toCharArray();for (int i = 0; i < charArray.length; i++) {if (charArray[i] >= 'a' && charArray[i] <= 'z') {charArray[i] = (char) (charArray[i] - 32);}}String upperStr = new String(charArray);System.out.println(upperStr);```输出结果:```HELLO WORLD```方法三:使用正则表达式Java中的正则表达式可以用来匹配字符串中的某些模式,并进行替换。
javabigdacamel金额小写转中文大写的方法 -回复
javabigdacamel金额小写转中文大写的方法-回复问题:javabigdacamel金额小写转中文大写的方法在Java编程中,有时候我们需要将金额从小写转换为中文大写。
这是一个常见的需求,例如在财务系统、发票打印等场景中。
本文将一步一步回答如何使用javabigdacamel库来实现金额小写转中文大写的方法。
第一步:导入javabigdacamel库首先,我们需要在项目中导入javabigdacamel库。
如果使用的是Maven 项目,可以在pom.xml文件中添加以下依赖项:xml<dependency><groupId>com.github.bigdacamel</groupId><artifactId>bigdacamel</artifactId><version>1.0.0</version></dependency>第二步:编写代码接下来,我们可以开始编写代码来实现金额小写转中文大写的方法。
首先,我们需要创建一个金额转换的工具类,例如`AmountUtils`。
在该类中,我们可以定义一个静态方法`toChineseNumber`来实现金额转换的逻辑。
代码如下:javaimport com.github.bigdacamel.AmountInChinese;public class AmountUtils {public static String toChineseNumber(double amount) { AmountInChinese amountInChinese = new AmountInChinese();return amountInChinese.toChineseNumber(amount);}}在上述代码中,我们使用了`AmountInChinese`类来实现金额转换的逻辑。
java数字转中文大写金额方法
标题:Java中的数字转中文大写金额方法目录:(可根据实际内容进行排版)1. 介绍2. 实现思路3. 代码示例4. 应用场景5. 总结1. 介绍在实际开发中,有时候我们需要将数字金额转换为中文大写金额,如将123456转换为“壹拾贰万叁仟肆佰伍拾陆元整”。
本文将介绍如何使用Java来实现数字转中文大写金额的方法。
2. 实现思路实现数字转中文大写金额的方法主要涉及数字的分段处理和中文数字的映射。
对于一个给定的数字,我们首先需要将其进行分段,然后对每个段进行中文数字的映射,最后将各个段拼接起来。
具体实现思路如下:- 将输入的数字按照万、千、百、十、个位进行分段处理。
如123456分成12、345、6三个段。
- 对于每个段,逐个数字进行中文数字的映射。
如123转为“壹佰贰拾叁”。
- 最终将各个段拼接起来,加上相应的“亿”、“万”、“元”等单位,得到最终的中文大写金额。
3. 代码示例下面是一个简单的Java代码示例,用于将数字金额转换为中文大写金额:```public class NumberToChinese {// 中文数字private static final String[] CHINESE_NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 中文金额单位private static final String[] CHINESE_UNIT = {"", "拾", "佰", "仟", "万", "亿"};// 中文金额段落private static final String[] CHINESE_SECTION = {"", "万", "亿"};public static String toChineseAmount(double amount) {// 将金额转换为字符串形式String amountStr = String.valueOf(amount);// 分割整数和小数部分String[] parts = amountStr.split("\\.");int integerPart = Integer.parseInt(parts[0]);int decimalPart = Integer.parseInt(parts[1]);// 转换整数部分String integerChinese = toChineseInteger(integerPart); // 转换小数部分String decimalChinese = toChineseDecimal(decimalPart); return integerChinese + "元" + decimalChinese;}private static String toChineseInteger(int number) {StringBuilder sb = new StringBuilder();int section = 0;// 处理每个数字段while (number > 0) {int num = number 10000;if (num != 0) {sb.insert(0, CHINESE_SECTION[section]);StringBuilder sectionStr = new StringBuilder();// 处理每个数字段内的数字for (int i = 0; i < 4; i++) {int digit = num 10;if (digit != 0) {sectionStr.insert(0, CHINESE_NUMBERS[digit] +CHINESE_UNIT[i]);} else {if (sectionStr.length() > 0 sectionStr.charAt(0) != '零') {sectionStr.insert(0, "零");}}num /= 10;}sb.insert(0, sectionStr);} else {if (sb.length() > 0 sb.charAt(0) != '零') {sb.insert(0, "零");}}number /= 10000;section++;}if (sb.length() == 0) {sb.append("零");}return sb.toString();}private static String toChineseDecimal(int number) {StringBuilder sb = new StringBuilder();if (number == 0) {sb.append("整");} else {int digit1 = number / 10;int digit2 = number 10;if (digit1 != 0) {sb.append(CHINESE_NUMBERS[digit1] + "角");}if (digit2 != 0) {sb.append(CHINESE_NUMBERS[digit2] + "分");}}return sb.toString();}}```4. 应用场景数字转中文大写金额的方法通常用于财务软件、发票打印等场景中。
javabigdacamel金额小写转中文大写的方法
javabigdacamel金额小写转中文大写的方法在Java编程中,将金额小写转换为中文大写是一项常见的任务。
这里,我们将使用BigDecimal库来实现这一功能。
以下是详细的实现步骤:首先,我们需要导入所需的库。
在此示例中,我们将使用BigDecimal和NumberFormat两个库。
请确保已在项目中添加了这两个库的依赖。
```javaimport java.math.BigDecimal;import java.text.NumberFormat;import java.text.SimpleDateFormat;```接下来,我们将编写一个方法,将金额小写转换为中文大写。
这里,我们使用BigDecimal库来处理金额,然后使用NumberFormat库将数字转换为中文大写。
```javapublic class JavaBigDecimal {public static void main(String[] args) {BigDecimal amount = new BigDecimal("1234.56");String chineseAmount = convertToChinese(amount);System.out.println(chineseAmount);}public static String convertToChinese(BigDecimal amount) {NumberFormat numberFormat = new NumberFormat();numberFormat.setGroupingUsed(false);numberFormat.setMinimumFractionDigits(2);numberFormat.setMaximumFractionDigits(2);String originalAmount = amount.toPlainString();String chineseAmount = numberFormat.format(amount);return chineseAmount;}}```在这个例子中,我们将一个金额小写(1234.56)转换为中文大写(壹仟贰佰叁拾肆元整)。
Java实现数字转换为人民币大写
Java实现数字转换为人民币大写四种简单方法//输入一个数字,将它按人民币大写输出package com.bluedot;public class Da2 {public static void main(String[] args) {//改变money的值,不超过9位数。
int money = 100100;int length = 0;char a[] = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };char b[] = { '一', '十', '百', '千', '万', '十', '百', '千', '亿', '十' };int[] c = new int[10];System.out.println(money + "元");while (money > 0) {c[length] = money % 10;// System.out.print(" 第" + length + "位:");// System.out.println(c[length]);money /= 10;length++;}// 位数对照 '一', '十', '百', '千', '万', '十', '百', '千', '亿', '十'// n: 0 1 2 3 4 5 6 7 8 9int n = length - 1;// System.out.println(n);int wanwei = 0; // 记录万位数是否都为零。
java实现数字转大写的方法
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(convert(135689123)); } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
这篇文章主要介绍了详解javacallable接口实现多线程的方式文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习吧
java实 现 数 字 转 大 写 的 方 法
java实现数字转大写的方法
说明:ห้องสมุดไป่ตู้
将数字金额转大写,如下:
public class Test { /** * @param args * add by zxx ,Nov 29, 2008 */ private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
private static final char[] units = new char[] { '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿' };
java小写转大写方法
Java小写转大写方法介绍在Java编程中,经常需要将字符串中的小写字母转换为大写字母。
这种转换可以应用于各种场景,如数据处理、字符串比较等。
本文将详细介绍如何使用Java编写一个方法来实现小写字母转大写字母的功能。
方法实现为了实现小写字母转大写字母的功能,我们可以使用Java内置的String类提供的toUpperCase()方法。
该方法将字符串中的所有小写字母转换为大写字母,并返回转换后的新字符串。
下面是一个简单的示例代码:public class Main {public static void main(String[] args) {String str = "hello world";String uppercaseStr = str.toUpperCase();System.out.println(uppercaseStr);}}在上述代码中,我们首先定义了一个字符串变量str,其值为”hello world”。
然后调用toUpperCase()方法将该字符串转换为大写字母形式,并将转换后的字符串赋值给新的变量uppercaseStr。
最后,通过调用System.out.println()方法将转换后的字符串输出到控制台。
运行上述代码,输出结果为:“HELLO WORLD”。
方法封装为了方便在多个地方复用该功能,我们可以将上述代码封装为一个方法。
下面是一个示例方法的实现:public class StringUtils {public static String convertToUppercase(String str) {return str.toUpperCase();}}在上述代码中,我们创建了一个名为StringUtils的工具类,并在其中定义了一个名为convertToUppercase()的静态方法。
该方法接受一个字符串参数str,并将其转换为大写字母形式后返回。
用java代码将金额转换成中文大写
import java.util.regex.Matcher;import java.util.regex.Pattern;public class getChinestMoney {public static void main(String[] args) {System.out.println("原金额为:154846244.20");System.out.println("转换后的金额为:");System.out.println(ChineseMoney("154846244.20"));}/*** 获得中文大写的金额的整数和小数部分* @param money* @return*/public static String ChineseMoney(String money) {String text = transChineseMoney1(money) + transChineseMoney2(money);//"Pattern.CASE_INSENSITIVE"表示不对大小写进行区分Pattern p = pile("零分",Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(text);text = m.replaceAll("");return text;}/*** 截取金额的整数部分,并将其转换成中文大写格式* @return*/public static String transChineseMoney1(String s){ String ss = s;String tmpnewchar = "";//以“.”将ss分成两段,part[0]为整数部分,part[1]为小数部分 String[] part = ss.split("\\.");if (part[0].length() > 10) {// 超出可转换位数return"";}for (int i = 0; i < part[0].length(); i++) {char perchar = part[0].charAt(i);if (perchar == '0')tmpnewchar = tmpnewchar + "零";if (perchar == '1')tmpnewchar = tmpnewchar + "壹";if (perchar == '2')tmpnewchar = tmpnewchar + "贰";if (perchar == '3')tmpnewchar = tmpnewchar + "叁";if (perchar == '4')tmpnewchar = tmpnewchar + "肆";if (perchar == '5')tmpnewchar = tmpnewchar + "伍";if (perchar == '6')tmpnewchar = tmpnewchar + "陆";if (perchar == '7')tmpnewchar = tmpnewchar + "柒";if (perchar == '8')tmpnewchar = tmpnewchar + "捌";if (perchar == '9')tmpnewchar = tmpnewchar + "玖";int j = part[0].length() - i - 1;if (j == 0)tmpnewchar = tmpnewchar + "圆";if (j == 1 && perchar != 0)tmpnewchar = tmpnewchar + "拾";if (j == 2 && perchar != 0)tmpnewchar = tmpnewchar + "佰";if (j == 3 && perchar != 0)tmpnewchar = tmpnewchar + "仟";if (j == 4 && perchar != 0)tmpnewchar = tmpnewchar + "万";if (j == 5 && perchar != 0)tmpnewchar = tmpnewchar + "拾";if (j == 6 && perchar != 0)tmpnewchar = tmpnewchar + "佰";if (j == 7 && perchar != 0)tmpnewchar = tmpnewchar + "仟";if (j == 8 && perchar != 0)tmpnewchar = tmpnewchar + "亿";if (j == 9 && perchar != 0)tmpnewchar = tmpnewchar + "拾";}return tmpnewchar;}/*** 截取金额的小数部分,并将其转换成中文大写格式* @return*/public static String transChineseMoney2(String s) {String ss = s;String tmpnewchar1 = "";String[] part = ss.split("\\.");if (ss.indexOf(".") != -1) {if (part[1].length() > 2) {// MessageDialog.openInformation(null,"提示","小数点之后只能保留两位,系统将自动截段");part[1] = part[1].substring(0, 2);}for (int i = 0; i < part[1].length(); i++) {char perchar = part[1].charAt(i);// System.out.println(perchar);if (perchar == '0')tmpnewchar1 = tmpnewchar1 + "零";if (perchar == '1')tmpnewchar1 = tmpnewchar1 + "壹";if (perchar == '2')tmpnewchar1 = tmpnewchar1 + "贰";if (perchar == '3')tmpnewchar1 = tmpnewchar1 + "叁";if (perchar == '4')tmpnewchar1 = tmpnewchar1 + "肆";if (perchar == '5')tmpnewchar1 = tmpnewchar1 + "伍";if (perchar == '6')tmpnewchar1 = tmpnewchar1 + "陆";if (perchar == '7')tmpnewchar1 = tmpnewchar1 + "柒";if (perchar == '8')tmpnewchar1 = tmpnewchar1 + "捌";if (perchar == '9')tmpnewchar1 = tmpnewchar1 + "玖";if (i == 0 && perchar != 0)tmpnewchar1 = tmpnewchar1 + "角";if (i == 1 && perchar != 0)tmpnewchar1 = tmpnewchar1 + "分"; }}return tmpnewchar1;}}。
javabigdacamel金额小写转中文大写的方法
javabigdacamel金额小写转中文大写的方法问题:javabigdacamel金额小写转中文大写的方法字数:1500-2000字一、介绍在许多应用程序中,例如财务管理系统,有时需要将金额从数字转换为中文大写形式。
通过将金额转换为中文大写形式,可以提高用户体验,并确保金额显示准确。
本文将介绍一种使用Java编程语言实现金额小写转中文大写的方法。
二、分析在将金额从小写数字转换为中文大写时,我们需要遵循一些规则。
下面是一些基本的规则:1. 以“圆”为单位进行金额的转换,如100.00元可以转为壹佰元。
2. 如果金额存在小数部分,则将其转换为角和分,如13.50元可以转换为壹拾叁元伍角。
3. 金额整数部分的处理规则如下:a. 每个数字都有对应的中文大写表示,如:1 - 壹、2 - 贰、3 - 叁等。
b. 除了金额的整数部分第一个数字之外,其他数字前面都需要加上单位,如:1000可以转换为壹仟。
c. 根据金额的位数,我们还需要确定单位的使用,如:1001可以转换为壹仟零壹元。
d. 当金额位数超过一定范围时,还需要使用更大的单位,比如亿、万等。
基于以上规则,我们可以编写Java代码来实现金额小写转中文大写的功能。
三、实现首先,我们需要创建一个Java类来实现金额小写转中文大写的逻辑。
以下是一个示例类的基本结构:public class AmountConverter {private static final String[] NUMBER_MAPPING = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};TODO: 实现金额转换方法TODO: 实现数字转换方法TODO: 实现单位转换方法}上述代码中,我们定义了一个名为AmountConverter的Java类,并声明了三个空方法,用于实现金额转换、数字转换和单位转换的逻辑。
java实现数字金额转换成汉字大写金额
java实现数字⾦额转换成汉字⼤写⾦额我们经常在做项⽬的财务报表,需要打印发票等情况时需要⽤到⼩写的财务⾦额要转换成汉字的⼤写⾦额,下⾯就是实现该功能的代码import ng.Math;/***通⽤型⾦钱转换类**/public class Money {private String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍","陆", "柒", "捌", "玖" };private String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾","佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰","仟", "万", "拾", "佰", "仟" };/*** @param NumStr 输⼊字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零* @return*/String PositiveIntegerToHanStr(String NumStr) {String RMBStr = "";boolean lastzero = false;boolean hasvalue = false; // 亿、万进位前有数值标记int len, n;len = NumStr.length();if (len > 15)return "数值过⼤!";for (int i = len - 1; i >= 0; i--) {if (NumStr.charAt(len - i - 1) == ' ')continue;n = NumStr.charAt(len - i - 1) - '0';if (n < 0 || n > 9)return "输⼊含⾮数字字符!";if (n != 0) {if (lastzero)RMBStr += HanDigiStr[0]; // 若⼲零后若跟⾮零值,只显⽰⼀个零// 除了亿万前的零不带到后⾯// if( !( n==1 && (i%4)==1 && (lastzero || i==len-1) ) ) //// 如⼗进位前有零也不发壹⾳⽤此⾏if (!(n == 1 && (i % 4) == 1 && i == len - 1)) // ⼗进位处于第⼀位不发壹⾳RMBStr += HanDigiStr[n];RMBStr += HanDiviStr[i]; // ⾮零值后加进位,个位为空hasvalue = true; // 置万进位前有值标记} else {if ((i % 8) == 0 || ((i % 8) == 4 && hasvalue)) // 亿万之间必须有⾮零值⽅显⽰万RMBStr += HanDiviStr[i]; // “亿”或“万”}if (i % 8 == 0)hasvalue = false; // 万进位前有值标记逢亿复位lastzero = (n == 0) && (i % 4 != 0);}if (RMBStr.length() == 0)return HanDigiStr[0]; // 输⼊空字符或"0",返回"零" return RMBStr;}。
javabigdacamel金额小写转中文大写的方法 -回复
javabigdacamel金额小写转中文大写的方法-回复如何将金额小写转为中文大写的方法。
第一步:了解中文大写数字的规则。
中文大写数字共有十个,分别是:零、壹、贰、叁、肆、伍、陆、柒、捌、玖。
同时还有一些计数单位,如:拾、佰、仟、万、亿等。
了解这些规则是转换金额小写为中文大写的前提。
第二步:将小写金额分割成整数部分和小数部分。
首先,要将小写金额按照整数和小数部分进行分割。
例如,如果需要转换的小写金额是12345.67,那么整数部分是12345,小数部分是67。
第三步:转换整数部分。
将整数部分从低位开始,每四位一组进行转换。
首先将每组的数字转换为中文大写数字,然后根据所在的组位加上计数单位。
例如,对于整数部分的12345,则可以按照如下的分组方式进行转换:12345 = 12仟345首先,将12转换为大写数字:壹拾贰。
然后,在壹拾贰后面加上计数单位:12仟。
最后,将345转换为大写数字:叁佰肆拾伍。
将整数部分转换后拼接在一起,即得到了中文大写的整数部分:壹拾贰仟叁佰肆拾伍。
第四步:转换小数部分。
对于小数部分,同样也是将其每位转换为大写数字,然后加上计数单位。
例如,对于小数部分的67,则可以按照如下的方式进行转换:67 = 六拾柒分首先,将6转换为大写数字:陆。
然后,将7转换为大写数字:柒。
最后,将“拾”和“分”加在数字后面。
最终,得到了中文大写的小数部分:陆拾柒分。
第五步:拼接整数和小数部分。
将转换后的整数部分和小数部分拼接在一起,同时在两者之间加上“圆”的字样,即得到了最终的中文大写金额。
将整数部分的“壹拾贰仟叁佰肆拾伍”和小数部分的“陆拾柒分”拼接在一起,并在两者之间加上“圆”,即得到了最终的中文大写金额:壹拾贰仟叁佰肆拾伍圆陆拾柒分。
通过以上五个步骤,我们可以将金额小写转换为中文大写。
需要注意的是,转换过程中需要严格按照中文大写数字的规则进行操作,同时,转换结果中应该包含正确的计数单位。
希望以上方法能对您有所帮助。
人民币小写金额转大写金额(java版)
人民币小写金额转大写金额(java版)代码说明:1.最大支持百万亿(15位整数,2位小数) ;或仟万亿(16位整数)2. 超过最大支持仟万亿(16位整数),只输出大写数字3. 整数部分越大,则小数部分输出越不精确4. 负数,则忽略负号代码:1.原代码import java.text.DecimalFormat;/**小写转大写* @author lily200825 2011-5-16* <li>最大支持<font color='red'>仟万亿</font>(16位整数,2位小数)</li>*/public class RMB {//输出日志public static volatile boolean isDebug = false;//阶值{仟万亿。
仟,佰,拾,元}public static final String[] unit = { "仟","佰","拾","万","仟","佰","拾","亿","仟","佰","拾","万","仟" ,"佰","拾","元" };// 数字表示public static final char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌','玖' };/*** 小写金额转大写金额* <li>最大支持<font color='red'>百万亿</font>(15位整数,2位小数) ;或<font color='red'>仟万亿</font>(16位整数)</li>* <li>超过最大支持<font color='red'>仟万亿</font>(16位整数),只输出大写数字</li> * <li>整数部分越大,则小数部分输出越不精确</li>* <li>负数,则忽略负号</li>* @param amount* @return 大写金额*/public static String number2UpperCase(double _amount){double amount = Math.abs(_amount);StringBuffer result = new StringBuffer();/** -------- 整数部分--------*/StringBuffer result_intStr = new StringBuffer();long num = (long)amount;// 转成大写String intStr = getUpperCase(num);int len = intStr.length();String regex_01 = "(零.)+";String regex_00 = "(零)+";String rep_str = "零";char zero = '零';if(len<=16){// ====== 仟万亿======int index = 0;for(int i=16-len ; i<16; i++){result_intStr.append(intStr.charAt(index++));//加权值result_intStr.append(unit[i]);}//加权后,未合并连续零String temp_intStr = result_intStr.toString();int temp_len = temp_intStr.length();if(isDebug){System.out.println("加权后未处理连续零,["+temp_intStr+"]。
java小写转大写方法
java小写转大写方法在Java中,我们可以使用toUpperCase()方法将小写字母转换为大写字母。
这个方法是String类的一个方法,可以将字符串中的所有小写字母转换为大写字母。
使用toUpperCase()方法非常简单,只需要在需要转换的字符串后面加上".toUpperCase()"即可。
例如,如果我们有一个字符串"hello",我们可以使用以下代码将其转换为大写字母:String str = "hello";String upperStr = str.toUpperCase();在这个例子中,我们首先定义了一个字符串"hello",然后使用toUpperCase()方法将其转换为大写字母,并将结果存储在一个新的字符串变量upperStr中。
需要注意的是,toUpperCase()方法不会改变原始字符串,而是返回一个新的字符串。
因此,如果我们想要将原始字符串转换为大写字母,我们需要将结果存储在一个新的变量中。
除了将整个字符串转换为大写字母之外,我们还可以使用toUpperCase()方法将字符串中的部分字符转换为大写字母。
例如,如果我们有一个字符串"hello world",我们可以使用以下代码将其中的"world"转换为大写字母:String str = "hello world";String upperStr = str.substring(6, 11).toUpperCase();在这个例子中,我们使用substring()方法从原始字符串中提取"world",然后使用toUpperCase()方法将其转换为大写字母,并将结果存储在一个新的字符串变量upperStr中。
需要注意的是,toUpperCase()方法只能将小写字母转换为大写字母,而不能将其他字符转换为大写字母。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
private static String[] bits = new String[] { "", "拾", "佰", "仟", "", "拾",
"佰", "仟", "", "拾", "佰", "仟", "", "拾", "佰", "仟", "" };
private static String[] nums = new String[] { "零", "壹", "贰", "叁", "肆", "伍",
"陆", "柒", "捌", "玖" };
public static String getChineseMoney(Double money) {
String[] moneys = moneyStr.split("\\.");
moneyStr = transChineseMoney1(moneys[0])
+ transChineseMoney2(moneys[1]);
return moneyStr;
}
public static String getChineseMoney(String money) {
// System.out.println("打印单个位数值:" + s);
if (num == 0 && zero == 2 && j == 5) {
returnMoney = "万" + returnMoney;
zero += 1;
} else if (num != 0 && j > 0 && j % 4 == 0) {
}
// System.out.println(num);
}
returnMoney += "元";
return returnMoney;
}
/**
* 处理小数的金额
*
* @param money
* @return
*/
public static String transChineseMoney2(String money) {
System.out.println(sm.getChineseMoney("3432432.436"));
}
}
money = money.substring(0, 2);
// System.out.println("小数截取所得:" + money);
int jiao = money.charAt(0) - 48;
// System.out.println(jiao);
int fen = money.charAt(1) - 48;
return returnMoney;
}
public static void main(String[] args) {
SwitchMoney sm = new SwitchMoney();
// System.out.println(sm.transChineseMoney1("430000"));
} else {
if (j % 4 != 8) {
returnMoney = "万" + returnMoney;
} else {
returnMoney = "亿" + returnMoney;
}
}
}
if (j % 8 != 0) {
returnMoney = s + "万" + returnMoney;
} else {
returnMoney = s + "亿" + returnMoney;
}
zero = 0;
} else if (num != 0) {
dMoney += Double.parseDouble(money.trim());
money = df.format(dMoney);
// System.out.println("是否为两位小数:" + money);
String[] moneys = money.split("\\.");
}
String returnMoney = "";
int zero = 0;
for (int i = money.length() - 1, j = 0; i >= 0; i--, j++) {
int num = money.charAt(i) - 48;
String s = nums[num] + bits[j];
} else {
if (jiao != 0) {
returnMoney = nums[jiao] + "角" + returnMoney;
// System.out.println("打印角:" + returnMoney);
}
}
// System.out.println(returnMoney);
money = transChineseMoney1(moneys[0]) + transChineseMoney2(moneys[1]);
return money;
}
/**
* 处理整数位的金额
*
* @param money
* @return
*/
returnMoney = s + returnMoney;
zero = 0;
} else {
zero += 1;
if (zero == 1 && j > 0) {
if (j % 4 != 0) {
returnMoney = "零" + returnMoney;
public static String transChineseMoney1(String money) {
if (money.isEmpty()) {
return "";
}
if (Integer.parseInt(money) == 0) {
return "";
String moneyStr = "";
java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
moneyStr = df.format(money);
// System.out.println("是否为两位小数:" + money);
if (money.isEmpty()) {
return "";
}
if (Integer.parseInt(money) == 0) {
return "整";
}
// System.out.println(money);
String returnMoney = "";
if (money.trim().isEmpty()) {
return "";
}
if (Double.parseDouble(money) <= 0) {
return "";
}
Double dMoney = 0.00;
java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
// System.out.println(fen);
if (fen != 0) {
returnMoney += nums[fen] + "分";
// System.out.println("打印分:" + returnMoney);
returnMoney = nums[jiao] + "角" + returnMoney;