java數字漢字
我自己寫的,匆忙寫的。我有時間再改進改進。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Stack;
/*
* 本程序
*/
public class Transfer {
public Stack<Integer> transfer(int n){
Stack<Integer> st = new Stack<Integer>();
int division = 0; //余數
while(n>=10){
division = n%10;
st.push(division);
n = n/10;
}
st.push(n); //將最高位壓棧
return st;
}
public static void main(String[]args){
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String in = "";
try {
in = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
int n = 0;
try{
n = Integer.parseInt(in);
} catch(NumberFormatException e){
e.printStackTrace();
}
Transfer tf = new Transfer();
Stack<Integer> s = tf.transfer(n);
/*
while(!s.empty()){
System.out.print(s.pop()); //測試語句
}
*/
HashMap<Integer, String> hp1 = new HashMap<Integer, String>(); //第一個映射表
hp1.put(0, "零"); //根據所在位的數值與中文對應
hp1.put(1, "一");
hp1.put(2, "二");
hp1.put(3, "三");
hp1.put(4, "四");
hp1.put(5, "五");
hp1.put(6, "六");
hp1.put(7, "七");
hp1.put(8, "八");
hp1.put(9, "九");
HashMap<Integer, String> hp2 = new HashMap<Integer, String>(); //第二個映射表
hp2.put(2, "十"); //根據所在位數,與中文對應
hp2.put(3, "百");
hp2.put(4, "千");
hp2.put(5, "萬");
hp2.put(6, "十萬");
hp2.put(7, "百萬");
hp2.put(8, "千萬");
hp2.put(9, "億");
//System.out.println(s.size());
String out = "";
while(!s.isEmpty()){
int temp = s.pop();
if(s.size()==0){
if(temp !=0){
out = out + hp1.get(temp);
}
}
else{
if(temp==0){
out = out + hp1.get(temp);
}
else{
out = out + hp1.get(temp) + hp2.get(s.size()+1);
}
}
}
System.out.println(out);
}
}
對於如2008之類的數,輸出的是二千零零八,還需要加以判斷,我再去處理下。
還有涉及萬以上的數,比如
123456
輸出的是一十萬二萬三千四百五十六,也必須增加判斷。
Ⅱ JAVA輸入數字轉換成漢字
public void method2(String num){
String[] arrUnit = {"元","十","百","千","萬"}; // 計量單位
String[] arrNum = {"零","一","二","三","四","五","六","七","八","九"}; //大寫數字
String[] strNum = num.split("|");
int nNumCount = strNum.length - 2;
// String newStr = "";
for(int i=0; i<strNum.length; i++){
if(strNum[i] != null && !"".equals(strNum[i])){
int n = Integer.parseInt(strNum[i]);
switch(n){
case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
}
}
}
}
public static void main(String args[])
{
new Test2().method2("9999");
}
Ⅲ java數字轉換漢字
25187是漢字『扣』的字元編碼。
每一個漢字,字母,標點符號都有自己的字元編碼。
http://tool.webmasterhome.cn/ascii.asp 你看這個地址里的表就明白了。鍵盤上你按住alt鍵,在先鍵盤(數字區)輸入對應的數字,顯示出來的也是數字代碼對應的字元。
比如:在能輸入文字的地方:按住alt,在小鍵盤(數字區)上依次按下3,5放開所有鍵,你看到游標處顯示的是『#』
Ⅳ java中的數字,字母,漢字如何隨機生成
數字,字母比較簡單。
//手寫的,省略了一部分String szzm = "0123...789abc...xyzABC...XYZ"; StringBuilder bu = new StringBuilder();for(int i = 0;i<6;i++){ bu.append(szzm.charAt(new Random().nextInt(szzm.length())));}System.out.println(bu.toString());
漢字復雜一些。我的方法是數字區間,19968~40869 之間 int 轉char 都會變成漢字。
不過這個范圍有點大,2w多漢字,有繁體的,還有生僻字。 如果不怕麻煩,漢字也可和數字一樣,弄個漢字表。
StringBuilder bu = new StringBuilder();int base = 19968;int qujian = 40869 - 19968;for(int i = 0;i<6;i++){ int rand = base + new Random().nextInt(qujian); bu.append((char)rand);}System.out.println(bu.toString());
Ⅳ java中如何把字元串中的數字轉換為漢字
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println(format("登記編號123456正在審批過程中。"));
}
publicstaticStringformat(Stringtext){
for(inti=0;i<10;i++){
text=text.replace((char)('0'+i),
"零一二三四五六七八九".charAt(i));
}
returntext;
}
}