導航:首頁 > 編程語言 > 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數字轉換大寫字母相關的資料

熱點內容
哈爾濱市行政區劃代碼 瀏覽:716
如何顯示文件擴張 瀏覽:283
ps怎麼移植文件 瀏覽:443
傳奇補丁文件說明 瀏覽:513
奧維地圖怎麼設置網路疊加 瀏覽:407
linux載入庫文件so失敗 瀏覽:714
大家都想要的app 瀏覽:58
程序員比特幣 瀏覽:568
mysqlfrm是什麼文件 瀏覽:665
win10點擊文件夾聲音消失 瀏覽:963
蘋果手機空白文件名 瀏覽:833
linuxmv覆蓋合並文件夾 瀏覽:932
不開訪客網路怎麼聯網 瀏覽:631
win10的軟體卸載 瀏覽:779
crv汽車自帶網路怎麼打開 瀏覽:973
食品原材料到什麼網站購買 瀏覽:649
一年級的小孩子學編程怎麼樣 瀏覽:863
ic考勤機怎麼導出數據 瀏覽:922
網站設計編程如何開始學習 瀏覽:749
淘寶代碼隱藏導航不見了 瀏覽:7

友情鏈接