生活随笔
收集整理的這篇文章主要介紹了
汉字转数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
/*
漢字轉數字的程序。輸入:八億零二十萬零一百零一 輸出:800200101
漢字有效字符為:零一二(兩)三四五六七八九十百千萬億
*/
public class HanToNumber{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
HanToNumber mainObj = new HanToNumber();
int res = mainObj.getNumFromHan(sc.next());
System.out.println(res);
}
public int getNumFromHan(String str){
Map<Character,Integer> map = new HashMap<Character,Integer>();
map.put('零',0);
map.put('一',1);
map.put('二',2);
map.put('兩',2);
map.put('三',3);
map.put('四',4);
map.put('五',5);
map.put('六',6);
map.put('七',7);
map.put('八',8);
map.put('九',9);
map.put('十',10);
map.put('百',100);
map.put('千',1000);
map.put('萬',10000);
map.put('億',100000000);
char[] arr = str.toCharArray();
int len = str.length();
List<Integer> resList = new ArrayList<Integer>();
int tmp = 0;
for(int i=0; i<len; i++){
if(!isUnit(arr[i])){
tmp += Integer.parseInt(String.valueOf(map.get(arr[i])));
if(i==len-1){
resList.add(tmp);
}
}else{
tmp *= map.get(arr[i]);
if(i<len-1 && !isUnit(arr[i+1]) || i==len-1){
resList.add(tmp);
tmp = 0;
}
}
}
int res = 0;
for(Integer in:resList){
res += in;
}
return res;
}
public boolean isUnit(char c){
boolean isUnit = false;
if(c=='十' || c=='百' || c=='千' || c=='萬' || c=='億'){
isUnit = true;
}
return isUnit;
}
}
總結
以上是生活随笔為你收集整理的汉字转数字的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。