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;
}
}