Java实现阿拉伯数字转大写中文
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
double number = 2783.332;
StringBuffer buffer = transformation(number);
System.out.println(buffer);
}
private static StringBuffer transformation(Double number) {
Map<Integer,String> map = new HashMap<>();
map.put(0,"零");
map.put(1,"壹");
map.put(2,"贰");
map.put(3,"叄");
map.put(4,"肆");
map.put(5,"伍");
map.put(6,"陆");
map.put(7,"柒");
map.put(8,"捌");
map.put(9,"玖");
ArrayList<String> list = new ArrayList<>();
char[] chars = String.valueOf(number).toCharArray();
int whichNumber = 0;
for (int i = 0; i < chars.length; i++) {
if (!String.valueOf(chars[i]).equals(".")){
String value = map.get(Integer.valueOf(String.valueOf(chars[i])));
list.add(value);
}else {
whichNumber = i+1;
}
}
return splicing(list, whichNumber);
}
private static StringBuffer splicing(ArrayList<String> list,int whichNumber) {
Map<Integer, String> mapValue= new HashMap<>();
mapValue.put(1,"元");
mapValue.put(2,"十");
mapValue.put(3,"百");
mapValue.put(4,"千");
mapValue.put(5,"万");
mapValue.put(6,"十");
mapValue.put(7,"百");
mapValue.put(8,"千");
mapValue.put(9,"亿");
mapValue.put(10,"十");
mapValue.put(0,"角");
mapValue.put(-1,"分");
mapValue.put(-2,"哩");
StringBuffer stringBuffer = new StringBuffer();
for (String s : list) {
whichNumber --;
if (whichNumber < 0) {
stringBuffer = stringBuffer.append(s).append(mapValue.get(whichNumber));
}else{
stringBuffer.append(s).append(mapValue.get(whichNumber));
}
}
return stringBuffer;
}
}