当前位置:首页 » 编程语言 » java数字转中文

java数字转中文

发布时间: 2022-08-28 16:31:50

A. java程序怎么才能把数字转换成中文显示

//我写的这个类的用法:只要你把想转换的数字当作参数传给printUp这个方法就可以了。
public class A {
public static void main(String[] args){
printUp(1011);
}

public static void printUp(int i){
String s = String.valueOf(i); //--------- 把接收到的int参数转成字符串
for(int j=0; j<s.length(); j++){ //-------根据字符串长度做其长度那么多次的循环
char c = s.charAt(j); //------------------把数字每一位以char的形式取出来
String tem = null; //---------------------定一个临时用的字符串
if(c=='1'){ //---------------------用if来判断每一位数字应该用哪个大写中文来打印。
tem = "一"; //---------------------以下我就没必要解释了。
}else if(c=='2'){
tem = "二";
}else if(c=='3'){
tem = "三";
}else if(c=='4'){
tem = "四";
}else if(c=='5'){
tem = "五";
}else if(c=='6'){
tem = "六";
}else if(c=='7'){
tem = "七";
}else if(c=='8'){
tem = "八";
}else if(c=='9'){
tem = "九";
}else if(c=='0'){
tem = "零";
}
System.out.print(tem);
}
}
}

才子_辉祝您愉快!

B. java 阿拉伯数字转中文小写

public class Test7 {
public static void main(String [] args){
//要输入的数字12
String i=12+"";
transition(i);
}
//阿拉伯数字转中文小写?
public static void transition(String si){
String []aa={"","十","百","千","万","十万","百万","千万","亿","十亿"};
String []bb={"一","二","三","四","五","六","七","八","九"};
char[] ch=si.toCharArray();
int maxindex=ch.length;
// 字符的转换
//两位数的特殊转换
if(maxindex==2){
for(int i=maxindex-1,j=0;i>=0;i--,j++){
if(ch[j]!=48){
if(j==0&&ch[j]==49){
System.out.print(aa[i]);
}else{
System.out.print(bb[ch[j]-49]+aa[i]);
}
}
}
//其他位数的特殊转换,使用的是int类型最大的位数为十亿
}else{
for(int i=maxindex-1,j=0;i>=0;i--,j++){
if(ch[j]!=48){
System.out.print(bb[ch[j]-49]+aa[i]);
}
}
}
}
}

输出结果:
十二

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

D. java如何将数字转为中文大写

import org.apache.commons.lang3.StringUtils;

/**
* @Title: ConvertUpMoney
* @Description: 将数字金额转换为大写中文金额
* @date: 2019年6月18日 下午10:52:27
*/
public class ConvertUpMoney {

// 大写数字
private static final String[] NUMBERS = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 整数部分的单位
private static final String[] IUNIT = {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
// 小数部分的单位
private static final String[] DUNIT = {"角","分","厘"};

/**
* 转换为大写的中文金额
* @param str 字符串类型的 金额数字
* @return
*/
public static String toChinese(String str) {
// 判断输入的金额字符串是否符合要求
if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {
return "抱歉,请输入数字!";
}

if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {
return "零元";
}

// 判断金额数字中是否存在负号"-"
boolean flag = false;
if(str.startsWith("-")){
// 标志位,标志此金额数字为负数
flag = true;
str = str.replaceAll("-", "");
}

// 去掉金额数字中的逗号","
str = str.replaceAll(",", "");
String integerStr;//整数部分数字
String decimalStr;//小数部分数字

// 初始化:分离整数部分和小数部分
if(str.indexOf(".")>0) {
integerStr = str.substring(0,str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
}else if(str.indexOf(".")==0) {
integerStr = "";
decimalStr = str.substring(1);
}else {
integerStr = str;
decimalStr = "";
}

// beyond超出计算能力,直接返回
if(integerStr.length()>IUNIT.length) {
return "超出计算能力!";
}

// 整数部分数字
int[] integers = toIntArray(integerStr);
// 判断整数部分是否存在输入012的情况
if (integers.length>1 && integers[0] == 0) {
return "抱歉,输入数字不符合要求!";
}
// 设置万单位
boolean isWan = isWan5(integerStr);
// 小数部分数字
int[] decimals = toIntArray(decimalStr);
// 返回最终的大写金额
String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);
if(flag){
// 如果是负数,加上"负"
return "负" + result;
}else{
return result;
}
}

/**
* 将字符串转为int数组
* @param number 数字
* @return
*/
private static int[] toIntArray(String number) {
int[] array = new int[number.length()];
for(int i = 0;i<number.length();i++) {
array[i] = Integer.parseInt(number.substring(i,i+1));
}
return array;
}

/**
* 将整数部分转为大写的金额
* @param integers 整数部分数字
* @param isWan 整数部分是否已经是达到【万】
* @return
*/
public static String getChineseInteger(int[] integers,boolean isWan) {
StringBuffer chineseInteger = new StringBuffer("");
int length = integers.length;
if (length == 1 && integers[0] == 0) {
return "";
}
for(int i=0; i<length; i++) {
String key = "";
if(integers[i] == 0) {
if((length - i) == 13)//万(亿)
key = IUNIT[4];
else if((length - i) == 9) {//亿
key = IUNIT[8];
}else if((length - i) == 5 && isWan) {//万
key = IUNIT[4];
}else if((length - i) == 1) {//元
key = IUNIT[0];
}
if((length - i)>1 && integers[i+1]!=0) {
key += NUMBERS[0];
}
}
chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));
}
return chineseInteger.toString();
}

/**
* 将小数部分转为大写的金额
* @param decimals 小数部分的数字
* @return
*/
private static String getChineseDecimal(int[] decimals) {
StringBuffer chineseDecimal = new StringBuffer("");
for(int i = 0;i<decimals.length;i++) {
if(i == 3) {
break;
}
chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));
}
return chineseDecimal.toString();
}

/**
* 判断当前整数部分是否已经是达到【万】
* @param integerStr 整数部分数字
* @return
*/
private static boolean isWan5(String integerStr) {
int length = integerStr.length();
if(length > 4) {
String subInteger = "";
if(length > 8) {
subInteger = integerStr.substring(length- 8,length -4);
}else {
subInteger = integerStr.substring(0,length - 4);
}
return Integer.parseInt(subInteger) > 0;
}else {
return false;
}
}

// Test
public static void main(String[] args) {
String number = "12.56";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1234567890563886.123";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1600";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "156,0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-156,0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.12";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "01.12";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0125";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-0125";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "sdw5655";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

System.out.println(null+": "+ConvertUpMoney.toChinese(null));
}
}

E. java关于输入一串数字转换为汉字的问题 我是一个新手,学的还不是很多, 最近做到了输入数字转换为汉字题

import java.util.Scanner;
public class Shiyan {
static boolean ret = false;
static String hanzi[]={"零","一","二","三","四","五","六","七","八","九"};
static String wei[]={"","十","百","千"};
static String dan[]={"","万","亿","兆"};

public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入一串数字");
String s=in.next();
int[] shuzi = new int[s.length()];
for(int i = 0; i < s.length(); i++){
//先由字符串转换成char,再转换成String,然后Integer
shuzi[i] = Integer.parseInt( String.valueOf(s.charAt(i)));
}

int zushu=(int)Math.ceil(shuzi.length/4.0);

shu(shuzi,0,shuzi.length%4);
System.out.print(dan[zushu-1]);
//数字转换汉字
for(int i=0;i<zushu;i++){//建立一个循环输出汉字
shu(shuzi,i*4+shuzi.length%4,4);

if(zushu-i-2<0){
return;
}
System.out.print(dan[zushu-i-2]);
}
}
//1234,1234
public static void shu(int[] shuzi,int Start,int leng){

int m=0;
//数字转换汉字
for(int i=Start;i<Start+leng;i++){//建立一个循环输出汉字
m++;
if(i>=shuzi.length){
return;
}else if(shuzi[i]!=0){
if(ret){
System.out.print(hanzi[0]);
}
System.out.print(hanzi[shuzi[i]]);
System.out.print(wei[leng-m]);
ret = false;
}else{
ret = true;
}

}

}
}

F. 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");
}

G. 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
输出的是一十万二万三千四百五十六,也必须增加判断。

H. 用java把阿拉伯数字转换成中文数字,怎么做

有个简单的转换,支持10亿以内

public class Test {
public static void test(int d) {
// String[] str = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String[] str = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
// String ss[] = new String[] { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" };
String ss[] = new String[] { "个", "十", "百", "千", "万", "十", "百", "千", "亿" };
String s = String.valueOf(d);
System.out.println(s);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
String index = String.valueOf(s.charAt(i));
sb = sb.append(str[Integer.parseInt(index)]);
}
String sss = String.valueOf(sb);
int i = 0;
for (int j = sss.length(); j > 0; j--) {
sb = sb.insert(j, ss[i++]);
}
System.out.println(sb);
}

public static void main(String[] args) {
test(3213);
test(912321321);
}
}


结果

不想要“个”的话就把 ss[] 数组中的“个”改成空

不过毕竟是机械的转换,有零的话不太符合语言习惯

I. java数字转换汉字

25187是汉字‘扣’的字符编码。
每一个汉字,字母,标点符号都有自己的字符编码。
http://tool.webmasterhome.cn/ascii.asp 你看这个地址里的表就明白了。键盘上你按住alt键,在先键盘(数字区)输入对应的数字,显示出来的也是数字代码对应的字符。
比如:在能输入文字的地方:按住alt,在小键盘(数字区)上依次按下3,5放开所有键,你看到光标处显示的是‘#’

热点内容
db2新建数据库 发布:2024-09-08 08:10:19 浏览:170
频率计源码 发布:2024-09-08 07:40:26 浏览:778
奥迪a6哪个配置带后排加热 发布:2024-09-08 07:06:32 浏览:100
linux修改apache端口 发布:2024-09-08 07:05:49 浏览:208
有多少个不同的密码子 发布:2024-09-08 07:00:46 浏览:566
linux搭建mysql服务器配置 发布:2024-09-08 06:50:02 浏览:995
加上www不能访问 发布:2024-09-08 06:39:52 浏览:811
银行支付密码器怎么用 发布:2024-09-08 06:39:52 浏览:513
苹果手机清理浏览器缓存怎么清理缓存 发布:2024-09-08 06:31:32 浏览:554
云服务器的优点与缺点 发布:2024-09-08 06:30:34 浏览:734