當前位置:首頁 » 編程語言 » 金額轉換java

金額轉換java

發布時間: 2025-02-22 22:59:22

『壹』 java如何把大寫的金額改成小寫

/**
* @(#)SimpleMoneyFormat.java
*
*金額轉換,阿拉伯數字的金額轉換為中國傳統的形式輸出
* @lpxuan
* @version 1.00 2010/7/31
*/

import java.text.NumberFormat;
import java.util.HashMap;
import java.lang.StringBuffer;

public class SimpleMoneyFormat {

public static final String EMPTY="";
public static final String ZERO="零";
public static final String ONE="壹";
public static final String TWO="貳";
public static final String THREE="叄";
public static final String FOUR="肆";
public static final String FIVE="伍";
public static final String SIX="陸";
public static final String SEVEN="柒";
public static final String EIGHT="捌";
public static final String NINE="玖";
public static final String TEN="拾";
public static final String HUNDRED="佰";
public static final String THOUSAND="仟";
public static final String TEN_THOUSAND="萬";
public static final String HUNDRED_MILLION="億";
public static final String YUAN="元";
public static final String JIAO="角";
public static final String FEN="分";
public static final String DOT=".";

private static SimpleMoneyFormat formatter=null;
private HashMap chineseNumberMap=new HashMap();
private HashMap chineseMoenyPattern=new HashMap();
private NumberFormat numberFormat=NumberFormat.getInstance();

//私有構造函數
private SimpleMoneyFormat() {
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setGroupingUsed(false);

chineseNumberMap.put("0",ZERO);
chineseNumberMap.put("1",ONE);
chineseNumberMap.put("2",TWO);
chineseNumberMap.put("3",THREE);
chineseNumberMap.put("4",FOUR);
chineseNumberMap.put("5",FIVE);
chineseNumberMap.put("6",SIX);
chineseNumberMap.put("7",SEVEN);
chineseNumberMap.put("8",EIGHT);
chineseNumberMap.put("9",NINE);
chineseNumberMap.put(DOT,DOT);

chineseMoenyPattern.put("1",TEN);
chineseMoenyPattern.put("2",HUNDRED);
chineseMoenyPattern.put("3",THOUSAND);
chineseMoenyPattern.put("4",TEN_THOUSAND);
chineseMoenyPattern.put("5",TEN);
chineseMoenyPattern.put("6",HUNDRED);
chineseMoenyPattern.put("7",THOUSAND);
chineseMoenyPattern.put("8",HUNDRED_MILLION);
}

//單例模式
public static SimpleMoneyFormat getInstance(){
if(formatter==null)
formatter=new SimpleMoneyFormat();
return formatter;
}

public String format(String moneyStr){
checkPrecision(moneyStr);
String result;
result=convertToChineseNumber(moneyStr);
result=addUnitsToChineseMoenyString(result);
return result;
}

public String format(double moneyDouble){
return format(numberFormat.format(moneyDouble));
}

public String format(int moneyInt){
return format(numberFormat.format(moneyInt));
}

public String format(long moneyLong){
return format(numberFormat.format(moneyLong));
}

public String format(Number moneyNum){
return format(numberFormat.format(moneyNum));
}

private String convertToChineseNumber(String moneyStr){
String result;
StringBuffer cMoneyStringBuffer =new StringBuffer();
for(int i=0;i<moneyStr.length();i++){
cMoneyStringBuffer.append(chineseNumberMap.
get(moneyStr.substring(i,i+1)));
}

int indexOfDot=cMoneyStringBuffer.indexOf(DOT);
int moneyPatternCursor=1;
for(int i=indexOfDot-1;i>0;i--){
cMoneyStringBuffer.insert(i,
chineseMoenyPattern.get(EMPTY+moneyPatternCursor));
moneyPatternCursor=moneyPatternCursor==
8?1:moneyPatternCursor+1;
}

String fractionPart=cMoneyStringBuffer.substring(
cMoneyStringBuffer.indexOf("."));
cMoneyStringBuffer.delete(
cMoneyStringBuffer.indexOf("."),
cMoneyStringBuffer.length());
while(cMoneyStringBuffer.indexOf("零拾")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零拾"),
cMoneyStringBuffer.indexOf("零拾")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零佰")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零佰"),
cMoneyStringBuffer.indexOf("零佰")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零仟")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零仟"),
cMoneyStringBuffer.indexOf("零仟")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零萬")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零萬"),
cMoneyStringBuffer.indexOf("零萬")+2,TEN_THOUSAND);
}
while(cMoneyStringBuffer.indexOf("零億")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零億"),
cMoneyStringBuffer.indexOf("零億")+2,HUNDRED_MILLION);
}
while(cMoneyStringBuffer.indexOf("零零")!=-1){
cMoneyStringBuffer.replace(
cMoneyStringBuffer.indexOf("零零"),
cMoneyStringBuffer.indexOf("零零")+2,ZERO);
}
if(cMoneyStringBuffer.lastIndexOf(ZERO)
==cMoneyStringBuffer.length()-1){
cMoneyStringBuffer.delete(
cMoneyStringBuffer.length()-1,
cMoneyStringBuffer.length());
}
cMoneyStringBuffer.append(fractionPart);
result=cMoneyStringBuffer.toString();
return result;
}

private String addUnitsToChineseMoenyString(String moneyStr){
String result;
StringBuffer cMoneyStringBuffer=new StringBuffer(moneyStr);

int indexOfDot=cMoneyStringBuffer.indexOf(DOT);
cMoneyStringBuffer.replace(indexOfDot,indexOfDot+1,YUAN);
cMoneyStringBuffer.insert(cMoneyStringBuffer.length()-1,JIAO);
cMoneyStringBuffer.insert(cMoneyStringBuffer.length(),FEN);

//拾佰仟萬億等都是漢字裡面才有的單位,加上它們
if(cMoneyStringBuffer.indexOf("零角零分")!=-1)//去掉零頭,加整
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零角零分"),
cMoneyStringBuffer.length(),"整");
else if(cMoneyStringBuffer.indexOf("零分")!=-1)//去掉零分,加整
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零分"),
cMoneyStringBuffer.length(),"整");
else if(cMoneyStringBuffer.indexOf("零角")!=-1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("零角"),
cMoneyStringBuffer.indexOf("零角")+2);
result=cMoneyStringBuffer.toString();
return result;
}

//檢查精度的合法性
private void checkPrecision(String moneyStr){
int fractionDigits=moneyStr.length()-moneyStr.indexOf(DOT)-1;
if(fractionDigits>2)//精度不能比分低
throw new RuntimeException("金額"+moneyStr+"的小數位數多餘兩位.");
}

public static void main(String[] args){
System.out.println(getInstance().format(new Double(10010001.01)));
}

}

『貳』 求有效的數字金額轉漢字大寫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編譯金額的中文大寫轉換。

/**
* 金額小數轉換成中文大寫金額
* @author Neil Han
*
*/
public class ConvertMoneyToUppercase {

private static final String UNIT[] = { "萬", "千", "佰", "拾", "億", "千", "佰",
"拾", "萬", "千", "佰", "拾", "元", "角", "分" };

private static final String NUM[] = { "零", "壹", "貳", "叄", "肆", "伍", "陸",
"柒", "捌", "玖" };

private static final double MAX_VALUE = 9999999999999.99D;

/**
* 將金額小數轉換成中文大寫金額
* @param money
* @return result
*/
public static String convertMoney(double money) {
if (money < 0 || money > MAX_VALUE)
return "參數非法!";
long money1 = Math.round(money * 100); // 四捨五入到分
if (money1 == 0)
return "零元整";
String strMoney = String.valueOf(money1);
int numIndex = 0; // numIndex用於選擇金額數值
int unitIndex = UNIT.length - strMoney.length(); // unitIndex用於選擇金額單位
boolean isZero = false; // 用於判斷當前為是否為零
String result = "";
for (; numIndex < strMoney.length(); numIndex++, unitIndex++) {
char num = strMoney.charAt(numIndex);
if (num == '0') {
isZero = true;
if (UNIT[unitIndex] == "億" || UNIT[unitIndex] == "萬"
|| UNIT[unitIndex] == "元") { // 如果當前位是億、萬、元,且數值為零
result = result + UNIT[unitIndex]; //補單位億、萬、元
isZero = false;
}
}else {
if (isZero) {
result = result + "零";
isZero = false;
}
result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];
}
}
//不是角分結尾就加"整"字
if (!result.endsWith("角")&&!result.endsWith("分")) {
result = result + "整";
}
//例如沒有這行代碼,數值"400000001101.2",輸出就是"肆千億萬壹千壹佰零壹元貳角"
result = result.replaceAll("億萬", "億");
return result;
}

public static void main(String[] args) {
double value = Double.parseDouble("40330701101.2");
System.out.println("您輸入的金額(小寫)為:" + value);
System.out.println("您輸入的金額(大寫)為:" + convertMoney(value));
}

}

『肆』 JAVA 編程 輸出金額的中文大寫形式

public class Text {

/**

* 測試程序的可行性

* @param args

*/

public static void main(String[] args) {

System.out.println("--------將數字轉換成中文金額的大寫形式------------\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();

// 判斷用戶輸入是否合法

// 若合法,返回這個值;若非法返回 "0"

if(this.checkNum(s)) {

return s;

} else {

return "";

}

}

/**

* 判斷用戶輸入的數據是否合法,用戶只能輸入大於零的數字,不能輸入其它字元

* @param s String

* @return 如果用戶輸入數據合法,返回 true,否則返回 false

*/

private boolean checkNum(String s) {

// 如果用戶輸入的數里有非數字字元,則視為非法數據,返回 false

try {

float f = Float.valueOf(s);

// 如果這個數小於零則視為非法數據,返回 false

if(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 args) {

System.out.println("--------將數字轉換成中文金額的大寫形式------------\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();

// 判斷用戶輸入是否合法

// 若合法,返回這個值;若非法返回 "0"

if(this.checkNum(s)) {

return s;

} else {

return "";

}

}

/**

* 判斷用戶輸入的數據是否合法,用戶只能輸入大於零的數字,不能輸入其它字元

* @param s String

* @return 如果用戶輸入數據合法,返回 true,否則返回 false

*/

private boolean checkNum(String s) {

// 如果用戶輸入的數里有非數字字元,則視為非法數據,返回 false

try {

float f = Float.valueOf(s);

// 如果這個數小於零則視為非法數據,返回 false

if(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;

}

}

熱點內容
c語言必背入門代碼 發布:2025-02-23 05:54:44 瀏覽:775
蘋果怎麼登陸安卓崩壞三 發布:2025-02-23 05:53:50 瀏覽:936
圓珠筆解壓教學 發布:2025-02-23 05:49:05 瀏覽:524
java真隨機數 發布:2025-02-23 05:48:59 瀏覽:475
大師如何看電腦配置 發布:2025-02-23 05:47:27 瀏覽:100
旅行怎麼排解壓力最好 發布:2025-02-23 05:46:51 瀏覽:920
ftp是做什麼的 發布:2025-02-23 05:34:48 瀏覽:778
城市民宿有哪些配置 發布:2025-02-23 05:34:42 瀏覽:310
go編程基礎 發布:2025-02-23 05:34:41 瀏覽:711
相冊在哪裡找迷你世界密碼 發布:2025-02-23 05:34:03 瀏覽:210