public class Trans
/**
* 測試程序的可行性
* @param args
*/
public static void main(String[] args) {
System
Trans
String s = t
// 如果轉換過後是一個空串
if(!
System
}
System
}
/**
* 從命令行接收一個數
* 驗證
* @return 如果輸入合法
*/
private String getNum() {
String s = null;
System
// 從命令行輸入這個浮點數
java
s = scanner
// 判斷用戶輸入是否合法
// 若合法
if(this
return s;
} else {
return
}
}
/**
* 判斷用戶輸入的數據是否合法
* @param s String
* @return 如果用戶輸入數據合法
*/
private boolean checkNum(String s) {
// 如果用戶輸入的數裡有非數字字符
try {
float f = Float
// 如果這個數小於零則視為非法數據
if(f <
System
return false;
}else {
return true;
}
} catch (NumberFormatException e) {
System
return false;
}
}
/**
* 把用戶輸入的數以小數點為界分割開來
* 進行相應的中文金額大寫形式的轉換
* 注
* @param s String
* @return 轉換好的中文金額大寫形式的字符串
*/
private String splitNum(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 以小數點為界分割這個字符串
int index = s
// 截取並轉換這個數的整數部分
String intOnly = s
String part
// 截取並轉換這個數的小數部分
String smallOnly = s
String part
// 把轉換好了的整數部分和小數部分重新拼湊一個新的字符串
String newS = part
return newS;
}
/**
* 對傳入的數進行四捨五入操作
* @param s String 從命令行輸入的那個數
* @return 四捨五入後的新值
*/
private String roundString(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 將這個數轉換成 double 類型
double d = Double
// 此操作作用在小數點後兩位上
d = (d *
// 將 d 進行格式化
s = new java
// 以小數點為界分割這個字符串
int index = s
// 這個數的整數部分
String intOnly = s
// 規定數值的最大長度只能到萬億單位
if(intOnly
System
return
}
// 這個數的小數部分
String smallOnly = s
// 如果小數部分大於兩位
if(smallOnly
String roundSmall = smallOnly
// 把整數部分和新截取的小數部分重新拼湊這個字符串
s = intOnly +
}
return s;
}
/**
* 把傳入的數轉換為中文金額大寫形式
* @param flag int 標志位
* @param s String 要轉換的字符串
* @return 轉換好的帶單位的中文金額大寫形式
*/
private String numFormat(int flag
int sLength = s
// 貨幣大寫形式
String bigLetter[] = {
// 貨幣單位
String unit[] = {
// 拾萬位到仟萬位
// 億位到萬億位
String small[] = {
// 用來存放轉換後的新字符串
String newS =
// 逐位替換為中文大寫形式
for(int i =
if(flag ==
// 轉換整數部分為中文大寫形式(帶單位)
newS = newS + bigLetter[s
} else if(flag ==
// 轉換小數部分(帶單位)
newS = newS + bigLetter[s
}
}
return newS;
}
/**
* 把已經轉換好的中文金額大寫形式加以改進
* 符串裡面多余的零
* 注
* 符串應該已經是用中文金額大寫形式表示的
* @param s String 已經轉換好的字符串
* @return 改進後的字符串
*/
private String cleanZero(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 如果用戶開始輸入了很多
while(s
// 將字符串中的
s = s
// 如果用戶當初輸入的時候只輸入了
if(s
return
}
}
// 字符串中存在多個
/* 由於本人對算法的研究太菜了
String regex
String regex
String regex
String regex
// 第一輪轉換把
for(int i =
s = s
}
// 第二輪轉換考慮
//
for(int i =
// 當第一輪轉換過後有可能有很多個零疊在一起
// 要把很多個重復的零變成一個零
s = s
s = s
s = s
}
// 第三輪轉換把
for(int i =
s = s
}
// 當
s = s
return s;
}
}
/**
* 程序目的
* 從命令行接收一個數
* 例如
* @author LovinChan
*
* 看到網上有很多這樣的例子程序
* 實在是不符合規范
* 點難度
* 所以本人還是決定重新寫一下這個程序
* 序我沒有用什麼很精妙的算法
* 的東西
* 大蝦海涵
*
* 程序的注釋我盡量寫得詳細一點
* 地方歡迎隨時跟我交流
* 我的msn:
* QQ:
* 我的blog:_chen
* 歡迎交流
*/
public class Trans
/**
* 測試程序的可行性
* @param args
*/
public static void main(String[] args) {
System
Trans
String s = t
// 如果轉換過後是一個空串
if(!
System
}
System
}
/**
* 從命令行接收一個數
* 驗證
* @return 如果輸入合法
*/
private String getNum() {
String s = null;
System
// 從命令行輸入這個浮點數
java
s = scanner
// 判斷用戶輸入是否合法
// 若合法
if(this
return s;
} else {
return
}
}
/**
* 判斷用戶輸入的數據是否合法
* @param s String
* @return 如果用戶輸入數據合法
*/
private boolean checkNum(String s) {
// 如果用戶輸入的數裡有非數字字符
try {
float f = Float
// 如果這個數小於零則視為非法數據
if(f <
System
return false;
}else {
return true;
}
} catch (NumberFormatException e) {
System
return false;
}
}
/**
* 把用戶輸入的數以小數點為界分割開來
* 進行相應的中文金額大寫形式的轉換
* 注
* @param s String
* @return 轉換好的中文金額大寫形式的字符串
*/
private String splitNum(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 以小數點為界分割這個字符串
int index = s
// 截取並轉換這個數的整數部分
String intOnly = s
String part
// 截取並轉換這個數的小數部分
String smallOnly = s
String part
// 把轉換好了的整數部分和小數部分重新拼湊一個新的字符串
String newS = part
return newS;
}
/**
* 對傳入的數進行四捨五入操作
* @param s String 從命令行輸入的那個數
* @return 四捨五入後的新值
*/
private String roundString(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 將這個數轉換成 double 類型
double d = Double
// 此操作作用在小數點後兩位上
d = (d *
// 將 d 進行格式化
s = new java
// 以小數點為界分割這個字符串
int index = s
// 這個數的整數部分
String intOnly = s
// 規定數值的最大長度只能到萬億單位
if(intOnly
System
return
}
// 這個數的小數部分
String smallOnly = s
// 如果小數部分大於兩位
if(smallOnly
String roundSmall = smallOnly
// 把整數部分和新截取的小數部分重新拼湊這個字符串
s = intOnly +
}
return s;
}
/**
* 把傳入的數轉換為中文金額大寫形式
* @param flag int 標志位
* @param s String 要轉換的字符串
* @return 轉換好的帶單位的中文金額大寫形式
*/
private String numFormat(int flag
int sLength = s
// 貨幣大寫形式
String bigLetter[] = {
// 貨幣單位
String unit[] = {
// 拾萬位到仟萬位
// 億位到萬億位
String small[] = {
// 用來存放轉換後的新字符串
String newS =
// 逐位替換為中文大寫形式
for(int i =
if(flag ==
// 轉換整數部分為中文大寫形式(帶單位)
newS = newS + bigLetter[s
} else if(flag ==
// 轉換小數部分(帶單位)
newS = newS + bigLetter[s
}
}
return newS;
}
/**
* 把已經轉換好的中文金額大寫形式加以改進
* 符串裡面多余的零
* 注
* 符串應該已經是用中文金額大寫形式表示的
* @param s String 已經轉換好的字符串
* @return 改進後的字符串
*/
private String cleanZero(String s) {
// 如果傳入的是空串則繼續返回空串
if(
return
}
// 如果用戶開始輸入了很多
while(s
// 將字符串中的
s = s
// 如果用戶當初輸入的時候只輸入了
if(s
return
}
}
// 字符串中存在多個
/* 由於本人對算法的研究太菜了
String regex
String regex
String regex
String regex
// 第一輪轉換把
for(int i =
s = s
}
// 第二輪轉換考慮
//
for(int i =
// 當第一輪轉換過後有可能有很多個零疊在一起
// 要把很多個重復的零變成一個零
s = s
s = s
s = s
}
// 第三輪轉換把
for(int i =
s = s
}
// 當
s = s
return s;
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27056.html