الطبقة العامة RMBConverter2 تنفذ IRMBConverter {
سلسلة نهائية ثابتة خاصة [] RMB_NUMBER ={"صفر"، "واحد"، "اثنان"، "ثلاثة"، "أربعة"، "五"، "鲁"، "七"، "八"، "九"}؛
سلسلة نهائية ثابتة خاصة [] RMB_ATTR = {"元"، "十"، "百"، "千"، "万"، "十"، "百"، "千"، "100 مليون"، "十"، ""مائة"، "تشيان"، "وان"، "عشرة"، "مائة"، "تشيان"}؛
السلسلة النهائية الثابتة الخاصة[] RMB_FEN = {"دقيقة"،"زاوية"}؛
@تجاوز
سلسلة عامة Change2RMB (عدد مزدوج) {
StringBuffer rsBuf = new StringBuffer();
إذا (التهم == 0L) {
إرجاع "صفر" ؛
}
إذا (التهم <0)
rsBuf.append("negative");
String zheng = strConverse(String.valueOf((long)counts));
String xiao = strConverse(String.valueOf(Math.round((counts - (long)counts)*100)));
char [] zhengArray = zheng.toCharArray();
char [] xiaoArray = xiao.toCharArray();
int zLength = zhengArray.length;
int xLength = xiaoArray.length;
List<String> zhengList = new ArrayList<String>();
for(int i =0; i< zLength; i++) {
int value = Integer.parseInt(""+zhengArray[i]);
إذا (القيمة == 0 && (i != 4) && (i != 8) && i != 0) {
zhengList.add(RMB_NUMBER[value]);
}آخر {
zhengList.add(RMB_NUMBER[القيمة]+
RMB_ATTR[i]);
}
}
for(int i = zhengList.size()-1; i>=0; i--) {
rsBuf.append(zhengList.get(i));
}
for(int i =0; i<xLength ;i++) {
int value = Integer.parseInt(""+xiaoArray[i]);
إذا (القيمة > 0) {
rsBuf.append(RMB_NUMBER[القيمة])
.append(RMB_FEN[xLength-i-1]);
}
}
String rs = rsBuf.toString();
rs = rs.replaceAll("zero+", "zero");
rs = rs.replaceAll("صفر يوان", "يوان");
rs = rs.replaceAll("00,000", "10,000");
rs = rs.replaceAll("000 مليون"، "100 مليون");
rs = rs.replaceAll("مليار", "مليار");
العودة روبية.
}
سلسلة خاصة strConverse(سلسلة سلسلة) {
StringBuffer rs = new StringBuffer();
char [] strArray = str.toCharArray();
for(int i = str.length()-1; i>=0; i--) {
rs.append(strArray[i]);
}
إرجاع rs.toString();
}
public static void main(String args []) {
RMBConverter2 c2 = new RMBConverter2();
System.out.println(c2.change2RMB(2001004.10));
System.out.println(c2.change2RMB(2000000.10));
System.out.println(c2.change2RMB(0L));
System.out.println(c2.change2RMB(1121000010000000L));
}
}