『壹』 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編寫一個把表示人民幣的阿拉伯數字轉化為大寫漢字的方法
public class RenMingBi {
/**
* @param args add by zxx ,Nov 29, 2008
*/
private static final char[] data = new char[]{
'零','壹','貳','叄','肆','伍','陸','柒','捌','玖'
};
private static final char[] units = new char[]{
'元','拾','佰','仟','萬','拾','佰','仟','億'
};
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(
convert(135689123));
}
public static String convert(int money)
{
StringBuffer sbf = new StringBuffer();
int unit = 0;
while(money!=0)
{
sbf.insert(0,units[unit++]);
int number = money%10;
sbf.insert(0, data[number]);
money /= 10;
}
return sbf.toString();
}
}
『叄』 java實現人民幣大寫換數字
我有數字換大寫的程序~
public class Test {
public static void main(String[] args) {
String s = toUpper("102");
System.out.println(s);
}
/**
* 小寫轉換大寫金額
*/
public static String toUpper(String amount) {
StringBuffer result = new StringBuffer("");
String[] tmp = amount.replaceAll(",", "").split("\\.");
String integer = tmp[0];
final int LEN = integer.length();
if (LEN > 12) {
throw new RuntimeException("太大了 ,處理不了啊!");
}
for (int k = 12; k > LEN; k--) {
integer = "0" + integer;
}
int part1 = Integer.parseInt(integer.substring(0, 4));
int part2 = Integer.parseInt(integer.substring(4, 8));
int part3 = Integer.parseInt(integer.substring(8, 12));
if (part1 != 0) {
result.append(parseInt(part1) + "億");
}
if (part2 != 0) {
if(part2<1000)
result.append("零");
result.append(parseInt(part2) + "萬");
}else{
result.append("零");
}
if (part3 != 0) {
if(part3<1000)
result.append("零");
result.append(parseInt(part3));
}
result.append("元");
if (tmp.length == 2) {
result.append(parseFloat(tmp[1]));
}
return result.toString();
}
/**
* 解析四位整數轉換為中文金額大寫
*
* @param sStr
* @return
*/
public static String parseInt(int i) {
String[] num = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖" };
String result = "";
int tmp = i;
if (tmp / 1000 != 0) {
result += num[tmp / 1000] + "仟";
tmp = tmp - (tmp / 1000) * 1000;
}
if (tmp / 100 != 0) {
result += num[tmp / 100] + "佰";
tmp = tmp - (tmp / 100) * 100;
}
if (tmp / 10 != 0) {
result += num[tmp / 10] + "拾";
tmp = tmp - (tmp / 10) * 10;
}
if (tmp != 0)
result += num[tmp];
return result;
}
/**
* 解析小數部分
*/
public static String parseFloat(String sStr) {
String[] num = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "七", "捌", "玖" };
String[] unit = { "角", "分" };
String result = "";
final int LEN = sStr.length();
for (int i = 0; i < LEN; i++) {
String tmp = sStr.substring(i, i + 1);
int k = Integer.parseInt(tmp);
result += num[k] + unit[i];
}
return result;
}
}
『肆』 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程序 輸入一串數字如12341289.23,輸出萬千百十元角分。高手幫忙!謝謝
//將人民幣金額轉換為大寫
function upDigit(n){
var fraction = ["角","分"];
var digit = ["零","壹","貳","叄","肆","伍","陸","柒","捌","玖"];
var unit = [["元","萬","億"],["","拾","佰","仟"]];
var head = n<0?"負":"";
n = Math.abs(n);
var s = "";
for(var i=0; i<fraction.length; i++){
s += (digit[Math.floor(n*10*Math.pow(10,i))%10]+fraction[i]).replace(/零./,"");
}
s = s||"整";
n = Math.floor(n);
for(var i=0; i<unit[0].length && n>0; i++){
var p = "";
for(var j=0; j<unit[1].length && n>0; j++){
p = digit[n%10] + unit[1][j]+p;
n = Math.floor(n/10);
}
s = p.replace(/(零.)*零$/,"").replace(/^$/,"零") + unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/,"元").replace(/(零.)+/g,"零").replace(/(^整$)/,"零元整");
}
『陸』 java中如何進行大小寫字母轉換
1.創建工程,或使用已有工程,在工程下創建包,包內新建一個類,我命名為Cases類,大家根據自己喜好隨便命名,但請保持類名與文件名一致。