导航:首页 > 编程语言 > java数字转换大写字母

java数字转换大写字母

发布时间:2023-07-16 08:07:14

『壹』 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 Map<String,String> ZerotoNineHt;

/**
* 用于存储十百千大写的哈希表
*/
private static final Map<Integer,String> thHuTenHt;

/**
* 用于存储万亿兆大写的哈希表
*/
private static final Map<Integer,String> wanYiZhaoHt;

static{
ZerotoNineHt=new Hashtable<String,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 Hashtable<Integer,String>();
thHuTenHt.put(0, "");
thHuTenHt.put(1, "拾");
thHuTenHt.put(2, "佰");
thHuTenHt.put(3, "仟");

wanYiZhaoHt=new Hashtable<Integer,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(level>3);

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;i<floatPart.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",
"","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提供了upper和lower方法来进行字母大小写的转换,实例如下:

	//把一个字符串中的大写转为小写,小写转换为大写:思路1
publicstaticStringexChange(Stringstr){
StringBuffersb=newStringBuffer();
if(str!=null){
for(inti=0;i<str.length();i++){
charc=str.charAt(i);
if(Character.isUpperCase(c)){
sb.append(Character.toLowerCase(c));
}elseif(Character.isLowerCase(c)){
sb.append(Character.toUpperCase(c));
}
}
}

returnsb.toString();
}

//把一个字符串中的大写转为小写,小写转换为大写:思路2
publicstaticStringexChange2(Stringstr){
for(inti=0;i<str.length();i++){
//如果是小写
if(str.substring(i,i+1).equals(str.substring(i,i+1).toLowerCase())){
str.substring(i,i+1).toUpperCase();
}else{
str.substring(i,i+1).toLowerCase();
}
}
returnstr;
}

『叁』 Java中怎么将小写阿拉伯数字转换成中文大写,不是金额的转行,而是直接转换成大写汉字。

public class Admin {

public static void main(String[] args) {
String[] arr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

String str = "123456";

char[] c = str.toCharArray();
for (int i = 0; i < c.length; i++) {
int a = Integer.parseInt(String.valueOf(c[i]));
System.out.print(arr[a]);
}
}
}

『肆』 Java将控制台输入的人民币数字金额转化为大写

import java.text.*;
import java.util.Scanner;
/**
* @作者:智鸱儿-chier
* @version 1.0 己丑年八月初三-2009/09/21
*/
public class RenminbiZhuanhuan {

/**
*
*/
public RenminbiZhuanhuan() {
// TODO Auto-generated constructor stub
}

/**
* @param args
*/
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入你要转换的金额:");
double number=s.nextDouble();
String s1=zhuanhuan(new Double(number));
System.out.println("转换成大写后的金额是:"+s1);
// TODO Auto-generated method stub

}
public static String zhuanhuan(Object ob){
String s=new DecimalFormat("#.00").format(ob);
s=s.replaceAll("\\.", "");//将字符串中的"."去掉
char d[]={ '零', '一', '两', '三', '四',
'五', '六', '七', '八', '九'};
String unit="仟佰拾兆仟佰拾亿仟佰拾万仟佰拾元角分";
int c=unit.length();
StringBuffer sb=new StringBuffer(unit);
for(int i=s.length()-1;i>=0;i--){
sb.insert(c-s.length()+i,d[s.charAt(i)-0x30]);
}
s=sb.substring(c-s.length(),c+s.length());
s=s.replaceAll("零[仟佰拾]", "零").
replaceAll("零{2,}", "零").
replaceAll("零([兆万元Ԫ])", "$1").
replaceAll("零[角分]", "");
return s;
}

}

希望对你有帮助!

『伍』 JAVA编写 将阿拉伯数字转换成中文大写(不要Script的)

public class MoneyUtil {

public static String[] chineseDigits = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};

/**
* 把金额转换为汉字表示的数量,小数点后四舍五入保留两位
* @param amount
* @return
*/
public static String amountToChinese(double amount) {

if(amount > 99999999999999.99 || amount < -99999999999999.99)
throw new IllegalArgumentException("参数值超出允许范围 (-99999999999999.99 ~ 99999999999999.99)!");

boolean negative = false;
if(amount < 0) {
negative = true;
amount = amount * (-1);
}

long temp = Math.round(amount * 100);
int numFen = (int)(temp % 10); // 分
temp = temp / 10;
int numJiao = (int)(temp % 10); //角
temp = temp / 10;
//temp 目前是金额的整数部分

int[] parts = new int[20]; // 其中的元素是把原来金额整数部分分割为值在 0~9999 之间的数的各个部分
int numParts = 0; // 记录把原来金额整数部分分割为了几个部分(每部分都在 0~9999 之间)
for(int i=0; ; i++) {
if(temp ==0)
break;
int part = (int)(temp % 10000);
parts[i] = part;
numParts ++;
temp = temp / 10000;
}

boolean beforeWanIsZero = true; // 标志“万”下面一级是不是 0

String chineseStr = "";
for(int i=0; i<numParts; i++) {

String partChinese = partTranslate(parts[i]);
if(i % 2 == 0) {
if("".equals(partChinese))
beforeWanIsZero = true;
else
beforeWanIsZero = false;
}

if(i != 0) {
if(i % 2 == 0)
chineseStr = "亿" + chineseStr;
else {
if("".equals(partChinese) && !beforeWanIsZero) // 如果“万”对应的 part 为 0,而“万”下面一级不为 0,则不加“万”,而加“零”
chineseStr = "零" + chineseStr;
else {
if(parts[i-1] < 1000 && parts[i-1] > 0) // 如果"万"的部分不为 0, 而"万"前面的部分小于 1000 大于 0, 则万后面应该跟“零”
chineseStr = "零" + chineseStr;
chineseStr = "万" + chineseStr;
}
}
}
chineseStr = partChinese + chineseStr;
}

if("".equals(chineseStr)) // 整数部分为 0, 则表达为"零元"
chineseStr = chineseDigits[0];
else if(negative) // 整数部分不为 0, 并且原金额为负数
chineseStr = "负" + chineseStr;

chineseStr = chineseStr + "元";

if(numFen == 0 && numJiao == 0) {
chineseStr = chineseStr + "整";
}
else if(numFen == 0) { // 0 分,角数不为 0
chineseStr = chineseStr + chineseDigits[numJiao] + "角";
}
else { // “分”数不为 0
if(numJiao == 0)
chineseStr = chineseStr + "零" + chineseDigits[numFen] + "分";
else
chineseStr = chineseStr + chineseDigits[numJiao] + "角" + chineseDigits[numFen] + "分";
}

return chineseStr;

}

/**
* 把一个 0~9999 之间的整数转换为汉字的字符串,如果是 0 则返回 ""
* @param amountPart
* @return
*/
private static String partTranslate(int amountPart) {

if(amountPart < 0 || amountPart > 10000) {
throw new IllegalArgumentException("参数必须是大于等于 0,小于 10000 的整数!");
}

String[] units = new String[] {"", "拾", "佰", "仟"};

int temp = amountPart;

String amountStr = new Integer(amountPart).toString();
int amountStrLength = amountStr.length();
boolean lastIsZero = true; //在从低位往高位循环时,记录上一位数字是不是 0
String chineseStr = "";

for(int i=0; i<amountStrLength; i++) {
if(temp == 0) // 高位已无数据
break;
int digit = temp % 10;
if(digit == 0) { // 取到的数字为 0
if(!lastIsZero) //前一个数字不是 0,则在当前汉字串前加“零”字;
chineseStr = "零" + chineseStr;
lastIsZero = true;
}
else { // 取到的数字不是 0
chineseStr = chineseDigits[digit] + units[i] + chineseStr;
lastIsZero = false;
}
temp = temp / 10;
}
return chineseStr;
}

public static void main(String[] args) {

if(args.length == 0) {
System.out.println("转换演示:");
System.out.println("-------------------------");
System.out.println("25000000000005.999: " + amountToChinese(25000000000005.999));
System.out.println("45689263.626: " + amountToChinese(45689263.626));
System.out.println("0.69457: " + amountToChinese(0.69457));
System.out.println("253.0: " + amountToChinese(253.0));
System.out.println("0: " + amountToChinese(0));
System.out.println("-------------------------");

//System.out.println(Long.MAX_VALUE);
//System.out.println(Long.MIN_VALUE);
}
else {
System.out.println("转换结果:");
System.out.println(args[0] + ": " + amountToChinese(Double.parseDouble(args[0])));
}

}

}

『陆』 用JAVA如何把小写数字变成大写

我以前用的人名币大小写转换,你改改应该就可以了:
public class Test6 {
static final String zhnum_0 = "零壹贰叁肆伍陆柒捌玖";

static final String zhnum = "零一二三四五六七八九";

static final String[] zhnum1 = { "", "十", "百", "千" };

static final String[] zhnum1_0 = { "", "拾", "佰", "仟" };

static final String[] zhnum2 = { "", "万", "亿", "万亿", "亿亿" };

public Test6() {
}

private static String numberToZH4(String s, boolean fan) {
StringBuffer sb = new StringBuffer();
if (s.length() != 4)
return null;
for (int i = 0; i < 4; i++) {
char c1 = s.charAt(i);
if (c1 == '0' && i > 1 && s.charAt(i - 1) == '0')
continue;
if (c1 != '0' && i > 1 && s.charAt(i - 1) == '0')
sb.append('零');
if (c1 != '0') {
if (fan) {
sb.append(zhnum_0.charAt(c1 - 48));
sb.append(zhnum1_0[4 - i - 1]);
} else {
sb.append(zhnum.charAt(c1 - 48));
sb.append(zhnum1[4 - i - 1]);
}
}
}
return new String(sb);
}

public static String numberToZH(long n, boolean fan) {
StringBuffer sb = new StringBuffer();
String strN = "000" + n;
int strN_L = strN.length() / 4;
strN = strN.substring(strN.length() - strN_L * 4);
for (int i = 0; i < strN_L; i++) {
String s1 = strN.substring(i * 4, i * 4 + 4);
String s2 = numberToZH4(s1, fan);
sb.append(s2);
if (s2.length() != 0)
sb.append(zhnum2[strN_L - i - 1]);
}
String s = new String(sb);
if (s.length() != 0 && s.startsWith("零"))
s = s.substring(1);
return s;
}

public static String numberToZH(double d, boolean fan) {
return numberToZH("" + d, fan);
}

public static String numberToZH(String str, boolean fan) {
StringBuffer sb = new StringBuffer();
int dot = str.indexOf(".");
if (dot < 0)
dot = str.length();

String zhengshu = str.substring(0, dot);
sb.append(numberToZH(Long.parseLong(zhengshu), fan));
if (dot != str.length()) {
sb.append("点");
String xiaoshu = str.substring(dot + 1);
for (int i = 0; i < xiaoshu.length(); i++) {
if (fan) {
sb.append(zhnum_0.charAt(Integer.parseInt(xiaoshu
.substring(i, i + 1))));
} else {
sb.append(zhnum.charAt(Integer.parseInt(xiaoshu.substring(
i, i + 1))));
}
}
}
String s = new String(sb);
if (s.startsWith("零"))
s = s.substring(1);
if (s.startsWith("一十"))
s = s.substring(1);
while (s.endsWith("零")) {
s = s.substring(0, s.length() - 1);
}
if (s.endsWith("点"))
s = s.substring(0, s.length() - 1);
return s;
}

public static String numberToRMB(double rmb) {
String strRMB = "" + rmb;
DecimalFormat nf = new DecimalFormat("#.#");
nf.setMaximumFractionDigits(2);
strRMB = nf.format(rmb).toString();
strRMB = numberToZH(strRMB, true);
if (strRMB.indexOf("点") >= 0) {
strRMB = strRMB + "零";
strRMB = strRMB.replaceAll("点", "圆");
String s1 = strRMB.substring(0, strRMB.indexOf("圆") + 1);
String s2 = strRMB.substring(strRMB.indexOf("圆") + 1);
strRMB = s1 + s2.charAt(0) + "角" + s2.charAt(1) + "分整";
} else {
strRMB = strRMB + "圆整";
}
return "人民币(大写):" + strRMB;
}

public static void main(String[] args) {
System.out.println(numberToRMB(342345.96));
System.out.println(numberToRMB(123));
}
}

『柒』 JAVA 数字转换为中文大写的转换

package com.heyang;

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

// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};

// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};

/**
* 构造函数,通过它将阿拉伯数字形式的字符串传入
* @param original
*/
public CnUpperCaser(String original){
// 成员变量初始化
integerPart="";
floatPart="";

if(original.contains(".")){
// 如果包含小数点
int dotIndex=original.indexOf(".");
integerPart=original.substring(0,dotIndex);
floatPart=original.substring(dotIndex+1);
}
else{
// 不包含小数点
integerPart=original;
}
}

/**
* 取得大写形式的字符串
* @return
*/
public String getCnString(){
// 因为是累加所以用StringBuffer
StringBuffer sb=new StringBuffer();

// 整数部分处理
for(int i=0;i<integerPart.length();i++){
int number=getNumber(integerPart.charAt(i));

sb.append(cnNumbers[number]);
sb.append(series[integerPart.length()-1-i]);
}

// 小数部分处理
if(floatPart.length()>0){
sb.append("点");
for(int i=0;i<floatPart.length();i++){
int number=getNumber(floatPart.charAt(i));

sb.append(cnNumbers[number]);
}
}

// 返回拼接好的字符串
return sb.toString();
}

/**
* 将字符形式的数字转化为整形数字
* 因为所有实例都要用到所以用静态修饰
* @param c
* @return
*/
private static int getNumber(char c){
String str=String.valueOf(c);
return Integer.parseInt(str);
}

/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new CnUpperCaser("123456789.12345").getCnString());
System.out.println(new CnUpperCaser("123456789").getCnString());
System.out.println(new CnUpperCaser(".123456789").getCnString());
System.out.println(new CnUpperCaser("0.1234").getCnString());
System.out.println(new CnUpperCaser("1").getCnString());
System.out.println(new CnUpperCaser("12").getCnString());
System.out.println(new CnUpperCaser("123").getCnString());
System.out.println(new CnUpperCaser("1234").getCnString());
System.out.println(new CnUpperCaser("12345").getCnString());
System.out.println(new CnUpperCaser("123456").getCnString());
System.out.println(new CnUpperCaser("1234567").getCnString());
System.out.println(new CnUpperCaser("12345678").getCnString());
System.out.println(new CnUpperCaser("123456789").getCnString());
}
}

『捌』 如何用java编一个程序将输入的阿拉伯数字转换成大写的汉字

用char强制转换就行,例如

public class test {
public static void main(String [] args){
char a=(char)19968;
char b='一';
System.out.println("a:"+a);
System.out.println("b:"+(b+1));
}

}

结果如下:
a: 一
b: 19969

ps:貌似理解错了,呵呵,版看楼权上的 switch吧

『玖』 java怎么将数字1转换为大写一

如下是一个将阿拉伯数字转为汉字的类,需要者可收藏到自己的util类库中以备不时之需。

public class ArabicToChineseUtils {
static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿", "万亿" };
static char[] numArray = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };

/**
* @param args
*/
public static void main(String[] args) {
int num = 245000006;
String numStr = foematInteger(num);
print("num= " + num + ", convert result: " + numStr);
double decimal = 245006.234206;
print("============================================================");
String decStr = formatDecimal(decimal);
print("decimal= " + decimal + ", decStr: " + decStr);
}

private static String foematInteger(int num) {
char[] val = String.valueOf(num).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
String m = val[i] + "";
int n = Integer.valueOf(m);
boolean isZero = n == 0;
String unit = units[(len - 1) - i];
if (isZero) {
if ('0' == val[i - 1]) {
// not need process if the last digital bits is 0
continue;
} else {
// no unit for 0
sb.append(numArray[n]);
}
} else {
sb.append(numArray[n]);
sb.append(unit);
}
}
return sb.toString();
}

private static String formatDecimal(double decimal) {
String decimals = String.valueOf(decimal);
int decIndex = decimals.indexOf(".");
int integ = Integer.valueOf(decimals.substring(0, decIndex));
int dec = Integer.valueOf(decimals.substring(decIndex + 1));
String result = foematInteger(integ) + "." + formatFractionalPart(dec);
return result;
}

private static String formatFractionalPart(int decimal) {
char[] val = String.valueOf(decimal).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
int n = Integer.valueOf(val[i] + "");
sb.append(numArray[n]);
}
return sb.toString();
}

private static void print(Object arg0) {
System.out.println(arg0);
}
}

阅读全文

与java数字转换大写字母相关的资料

热点内容
网络评选一般有哪些 浏览:476
2021三支一扶报名数据在哪里看 浏览:914
网络未备案怎么打得开 浏览:987
计算机程序用什么编程语言 浏览:324
linux入门常用命令 浏览:497
江宁区哪里有数控编程培训 浏览:778
java写一个shape形状类 浏览:744
win7如何设置word背景颜色 浏览:484
如何创造电脑编程语言 浏览:56
昂达平板电脑图形密码忘记怎么办 浏览:92
组织文件内容是什么 浏览:183
0基础如何学习智能编程 浏览:366
java程序员全攻略下载 浏览:715
网络逆向教程 浏览:135
iso文件如何重装系统 浏览:750
ghost镜像文件路径如何恢复 浏览:832
搭建网站需要多少钱啊 浏览:599
编程猫怎么设置背景亮度 浏览:177
qq文件破损 浏览:414
javapoi配置 浏览:608

友情链接