「java数字大写」java大小写

博主:adminadmin 2022-12-22 05:30:06 68

本篇文章给大家谈谈java数字大写,以及java大小写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java如何将数字转为中文大写

import org.apache.commons.lang3.StringUtils;

/**

* @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 = {"角","分","厘"};

/**

* 转换为大写的中文金额

* @param str 字符串类型的 金额数字

* @return

*/

public static String toChinese(String str) {

// 判断输入的金额字符串是否符合要求

if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {

return "抱歉,请输入数字!";

}

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) {

return "超出计算能力!";

}

// 整数部分数字

int[] integers = toIntArray(integerStr);

// 判断整数部分是否存在输入012的情况

if (integers.length1 integers[0] == 0) {

return "抱歉,输入数字不符合要求!";

}

// 设置万单位

boolean isWan = isWan5(integerStr);

// 小数部分数字

int[] decimals = toIntArray(decimalStr);

// 返回最终的大写金额

String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);

if(flag){

// 如果是负数,加上"负"

return "负" + result;

}else{

return result;

}

}

/**

* 将字符串转为int数组

* @param number 数字

* @return

*/

private static int[] toIntArray(String number) {

int[] array = new int[number.length()];

for(int i = 0;inumber.length();i++) {

array[i] = Integer.parseInt(number.substring(i,i+1));

}

return array;

}

/**

* 将整数部分转为大写的金额

* @param integers 整数部分数字

* @param isWan 整数部分是否已经是达到【万】

* @return

*/

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; ilength; 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();

}

/**

* 将小数部分转为大写的金额

* @param decimals 小数部分的数字

* @return

*/

private static String getChineseDecimal(int[] decimals) {

StringBuffer chineseDecimal = new StringBuffer("");

for(int i = 0;idecimals.length;i++) {

if(i == 3) {

break;

}

chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));

}

return chineseDecimal.toString();

}

/**

* 判断当前整数部分是否已经是达到【万】

* @param integerStr 整数部分数字

* @return

*/

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;

}

}

// Test

public 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中怎么把数字转换大写数字

package com.heyang; /** * 将10亿以内的阿拉伯数字转成汉字大写形式 * @author xizhenyin * */ public class CnUpperCaser { // 整数部分 private String integerPart; // 小数部分 private String floatPart; // 将数字转化为汉字的数组,因为...

java数字大小写转换

给你段代码参考:

public class NumToChinese {

public static String NumberToChinese(String input){

String s1="零壹贰叁肆伍陆柒捌玖";

String s4="分角整元拾佰仟万拾佰仟亿拾佰仟";

String temp="";

String result="";

if (input==null) return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";

temp=input.trim();

float f;

try{

f=Float.parseFloat(temp);

}catch(Exception e){

return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";

}

int len=0;

if(temp.indexOf(".")==-1) len=temp.length();

else len=temp.indexOf(".");

if(lens4.length()-3) return("输入字串最大只能精确到仟亿,小数点只能两位!");

int n1=0;

String num="";

String unit="";

for(int i=0;itemp.length();i++){

if(ilen+2){break;}

if(i==len) {continue;}

n1=Integer.parseInt(String.valueOf(temp.charAt(i)));

num=s1.substring(n1,n1+1);

n1=len-i+2;

unit=s4.substring(n1,n1+1);

result=result.concat(num).concat(unit);

}

if((len==temp.length())||(len==temp.length()-1)) result=result.concat("整");

if(len==temp.length()-2) result=result.concat("零分");

return result;

}

}

java 数字转大写汉字

java 数字转大写汉字的完整例子,请参考:

package com.sitinspring;

import java.math.BigDecimal;

import java.util.Hashtable;

import java.util.Map;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* 将阿拉伯数字转换成汉语大写数字

* @author sitinspring

* @date 2008-03-25

*/

public class ChineseUpperCaser{

/**

* 用于存储整数部分

*/

private String integerPart;

/**

* 用于存储小数部分

*/

private String floatPart;

/**

* 用于存储0-9大写的哈希表

*/

private static final MapString,String ZerotoNineHt;

/**

* 用于存储十百千大写的哈希表

*/

private static final MapInteger,String thHuTenHt;

/**

* 用于存储万亿兆大写的哈希表

*/

private static final MapInteger,String wanYiZhaoHt;

static{

ZerotoNineHt=new HashtableString,String();

ZerotoNineHt.put("0", "零");

ZerotoNineHt.put("1", "壹");

ZerotoNineHt.put("2", "贰");

ZerotoNineHt.put("3", "叁");

ZerotoNineHt.put("4", "肆");

ZerotoNineHt.put("5", "伍");

ZerotoNineHt.put("6", "陆");

ZerotoNineHt.put("7", "柒");

ZerotoNineHt.put("8", "捌");

ZerotoNineHt.put("9", "玖");

thHuTenHt=new HashtableInteger,String();

thHuTenHt.put(0, "");

thHuTenHt.put(1, "拾");

thHuTenHt.put(2, "佰");

thHuTenHt.put(3, "仟");

wanYiZhaoHt=new HashtableInteger,String();

wanYiZhaoHt.put(0, "");

wanYiZhaoHt.put(1, "万");

wanYiZhaoHt.put(2, "亿");

wanYiZhaoHt.put(3, "兆");

}

private static String getWanYiZhao(int level){

String retval="";

do{

retval+=wanYiZhaoHt.get(level % 4);

level-=3;

}while(level3);

return retval;

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(float number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(double number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(int number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(long number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(String number) throws NumberFormatException{

String formalNumber=formatNumber(number);

// 辟分以给整数部分和小数部分赋值

String[] arr=formalNumber.split("[.]");

if(arr.length==2){

// 有小数点

integerPart=arr[0];

floatPart=arr[1];

}

else{

// 无小数点

integerPart=arr[0];

}

}

public String toString(){

String retval="";

if(integerPart!=null){

retval+=parseIntegerPart();

}

if(floatPart!=null){

retval+=parseFloatPart();

}

else{

retval+="整";

}

return retval;

}

/**

* 得到整数部分的汉字大写表示

* @return

*/

private String parseIntegerPart(){

String retval="";

// 将整数部分逆序,因为需要反向读取

String reverseIntegerPart="";

for(int i=integerPart.length()-1;i-1;i--){

reverseIntegerPart+=integerPart.charAt(i);

}

// 将整数部分按四位分段

Pattern p = Pattern.compile("\\d{4}",Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(reverseIntegerPart);

StringBuffer sb = new StringBuffer();

boolean result = m.find();

while (result) {

// 每找到四位放一个逗号

m.appendReplacement(sb, m.group(0) + ",");

result = m.find();

}

m.appendTail(sb);

// 按逗号劈分,得到四位分组数据的数组

String[] arr=sb.toString().split(",");

int j;

String str;

for(int i=arr.length-1;i=0;i--){

String temp=arr[i];

// 阿拉伯数字转大写汉字加单位(千百十)

for(j=temp.length()-1;j=0;j--){

str=String.valueOf(temp.charAt(j));

retval+=ZerotoNineHt.get(str)+thHuTenHt.get(j);

}

retval=retval.replaceAll("(零)($)", "$2");// 零在末尾则去掉

// 加单位(兆亿万)

retval+=getWanYiZhao(i);

}

// 零替换

retval=retval.replaceAll("(零[仟佰拾])", "零");

retval=retval.replaceAll("(零{2,})", "零");

retval=retval.replaceAll("(零)($)", "$2");// 零在末尾则去掉

return retval;

}

/**

* 得到小数部分的汉字大写表示

* @return

*/

private String parseFloatPart(){

String retval="点";

for(int i=0;ifloatPart.length();i++){

String temp=String.valueOf(floatPart.charAt(i));

retval+=ZerotoNineHt.get(temp);

}

return retval;

}

/**

* 对输入的字符串进行验证,如果不能转化为数字形式则抛出数字转化异常

* ,注意这是一个运行时异常(非检查型异常),程序不用显式捕获

* @param number

* @throws NumberFormatException

*/

private String formatNumber(String number) throws NumberFormatException{

return (new BigDecimal(number)).toString();

}

public static void main(String[] args){

String[] arr={"1.543524304302432","12.432423432","123.454235","1234","12345","123456","1234567",

"12345678","123456789","1234567891","12345678912","123456789123","1234567891234","12345678912345",

"123456789123456","1234567891234567","12345678912345678","123456789123456789",

"123456789123456789123456089123456789123456789123450780","0","00","000","0000","01","001","0001",

"00001","10","100","1000","10000","101","1001","10001","100001","1.23","21.234","243400031.233234",

"5400035.980","543.6545"};

//String[] arr={"0","00","000","0000","01","001","0001","00001","10","100","1000","10000","101","1001","10001","100001"};

//String[] arr={"1.23","21.234","243400031.233234","5400035.980","543.6545"};

for(String str:arr){

System.out.println("阿拉伯数字等于:"+str+" 大写汉字等于:"+new ChineseUpperCaser(str));

}

}

}

关于java数字大写和java大小写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。