JAVA 数字转换为中文大写的转换 java方式实现数字转换成中文大写

\u7528JAVA\u7f16\u7a0b\u5c06\u4efb\u610f\u4e00\u4e2a\u6574\u6570\u8f6c\u6362\u6210\u4e2d\u6587\u5927\u5199\uff0c\u5982101\u8f6c\u6362\u4e3a\u4e00\u767e\u96f6\u4e00

import java.io.BufferedReader;
import java.io.FileReader;

public class setrs
{

public static void main(String[] args)
throws Exception
{
String fileName = "c:\\input.txt";

// \u5355\u4f4d\u6570\u7ec4
String[] units = new String[] {"\u5341", "\u767e", "\u5343", "\u4e07", "\u5341", "\u767e", "\u5343", "\u4ebf"};

// \u4e2d\u6587\u5927\u5199\u6570\u5b57\u6570\u7ec4
String[] numeric = new String[] {"\u96f6", "\u58f9", "\u8d30", "\u53c1", "\u8086", "\u4f0d", "\u9646", "\u67d2", "\u634c", "\u7396"};

// \u8bfb\u6587\u4ef6
BufferedReader br = new BufferedReader(new FileReader(fileName));
String temp = null;
temp = br.readLine();
String res = "";

while (null != temp)
{
// \u904d\u5386\u4e00\u884c\u4e2d\u6240\u6709\u6570\u5b57
for (int k = -1; temp.length() > 0; k++)
{
// \u89e3\u6790\u6700\u540e\u4e00\u4f4d
int j = Integer.parseInt(temp.substring(temp.length() - 1, temp.length()));
String rtemp = numeric[j];

// \u6570\u503c\u4e0d\u662f0\u4e14\u4e0d\u662f\u4e2a\u4f4d \u6216\u8005\u662f\u4e07\u4f4d\u6216\u8005\u662f\u4ebf\u4f4d \u5219\u53bb\u53d6\u5355\u4f4d
if (j != 0 && k != -1 || k % 8 == 3 || k % 8 == 7)
{
rtemp += units[k % 8];
}

// \u62fc\u5728\u4e4b\u524d\u7684\u524d\u9762
res = rtemp + res;

// \u53bb\u9664\u6700\u540e\u4e00\u4f4d
temp = temp.substring(0, temp.length() - 1);
}

// \u53bb\u9664\u540e\u9762\u8fde\u7eed\u7684\u96f6\u96f6..
while (res.endsWith(numeric[0]))
{
res = res.substring(0, res.lastIndexOf(numeric[0]));
}

// \u5c06\u96f6\u96f6\u66ff\u6362\u6210\u96f6
while (res.indexOf(numeric[0] + numeric[0]) != -1)
{
res = res.replaceAll(numeric[0] + numeric[0], numeric[0]);
}

// \u5c06 \u96f6+\u67d0\u4e2a\u5355\u4f4d \u8fd9\u6837\u7684\u7a9c\u66ff\u6362\u6210 \u8be5\u5355\u4f4d \u53bb\u6389\u5355\u4f4d\u524d\u9762\u7684\u96f6
for (int m = 1; m < units.length; m++)
{
res = res.replaceAll(numeric[0] + units[m], units[m]);
}

// \u8fd9\u91cc\u6253\u5370\u4e00\u4e0b \u53ef\u4ee5\u6539\u6210\u5199\u6587\u4ef6
System.out.println(res);

// \u8bfb\u53d6\u4e0b\u4e00\u4e2a\u6570
res = "";
temp = br.readLine();
}
}
}

\u8fd9\u4ee3\u7801\u662f\u522b\u4eba\u5199\u7684\u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u795d\u4f60\u5b66\u4e60\u8fdb\u6b65\u3002

String mm[]=rmb.split("\\.");\u8fd9\u91cc\u7684\u5c0f\u6570\u70b9\u5e94\u8be5\u8be5\u662f\u8fd9\u6837\u7684

package com.heyang;

/**
* 将10亿以内的阿拉伯数字转成汉字大写形式
* @author xizhenyin
*
*/
public class CnUpperCaser {
// 整数部分
private String integerPart;
// 小数部分
private String floatPart;

// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};

// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};

/**
* 构造函数,通过它将阿拉伯数字形式的字符串传入
* @param original
*/
public CnUpperCaser(String original){
// 成员变量初始化
integerPart="";
floatPart="";

if(original.contains(".")){
// 如果包含小数点
int dotIndex=original.indexOf(".");
integerPart=original.substring(0,dotIndex);
floatPart=original.substring(dotIndex+1);
}
else{
// 不包含小数点
integerPart=original;
}
}

/**
* 取得大写形式的字符串
* @return
*/
public String getCnString(){
// 因为是累加所以用StringBuffer
StringBuffer sb=new StringBuffer();

// 整数部分处理
for(int i=0;i<integerPart.length();i++){
int number=getNumber(integerPart.charAt(i));

sb.append(cnNumbers[number]);
sb.append(series[integerPart.length()-1-i]);
}

// 小数部分处理
if(floatPart.length()>0){
sb.append("点");
for(int i=0;i<floatPart.length();i++){
int number=getNumber(floatPart.charAt(i));

sb.append(cnNumbers[number]);
}
}

// 返回拼接好的字符串
return sb.toString();
}

/**
* 将字符形式的数字转化为整形数字
* 因为所有实例都要用到所以用静态修饰
* @param c
* @return
*/
private static int getNumber(char c){
String str=String.valueOf(c);
return Integer.parseInt(str);
}

/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new CnUpperCaser("123456789.12345").getCnString());
System.out.println(new CnUpperCaser("123456789").getCnString());
System.out.println(new CnUpperCaser(".123456789").getCnString());
System.out.println(new CnUpperCaser("0.1234").getCnString());
System.out.println(new CnUpperCaser("1").getCnString());
System.out.println(new CnUpperCaser("12").getCnString());
System.out.println(new CnUpperCaser("123").getCnString());
System.out.println(new CnUpperCaser("1234").getCnString());
System.out.println(new CnUpperCaser("12345").getCnString());
System.out.println(new CnUpperCaser("123456").getCnString());
System.out.println(new CnUpperCaser("1234567").getCnString());
System.out.println(new CnUpperCaser("12345678").getCnString());
System.out.println(new CnUpperCaser("123456789").getCnString());
}
}

import java.util.Scanner;

public class Change {

/**
* @param args
*/
public static String numtochinese(String input){
String s1="零壹贰叁肆伍陆柒捌玖";
String s4="分角整元拾佰仟万拾佰仟亿拾佰仟";
String temp="";
String result="";
if (input==null) return "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";
temp=input.trim();
float f;
try{
f=Float.parseFloat(temp);

}catch(Exception e){return "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";}
int len=0;
if (temp.indexOf(".")==-1) len=temp.length();
else len=temp.indexOf(".");
if(len>s4.length()-3) return("输入字串最大只能精确到仟亿,小数点只能两位!");
int n1,n2=0;
String num="";
String unit="";

for(int i=0;i<temp.length();i++){
if(i>len+2){break;}
if(i==len) {continue;}
n1=Integer.parseInt(String.valueOf(temp.charAt(i)));
num=s1.substring(n1,n1+1);
n1=len-i+2;
unit=s4.substring(n1,n1+1);
result=result.concat(num).concat(unit);
}
if ((len==temp.length())||(len==temp.length()-1)) result=result.concat("整");
if (len==temp.length()-2) result=result.concat("零分");
return result;
}
public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner s = new Scanner(System.in);
System.out.print("输入钱数:");
String string = String.valueOf(s.nextDouble());

Change c = new Change();
System.out.println(c.numtochinese(string));
}

}

运行结果:
输入钱数:456.54
肆佰伍拾陆元伍角肆分

感觉做过这题,找下..

import java.io.*;
public class Test1
{

public static void main(String[] args)
{
char c[]={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};

System.out.print("请输入一个阿拉伯数字: ");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//得到输入!
try
{
String input=br.readLine();
for(int count=0;count<input.length();count++)
{
//转成数字
char temp=input.charAt(count);
switch (temp)
{
case '1':System.out.print(c[1]);break;
case '2':System.out.print(c[2]);break;
case '3':System.out.print(c[3]);break;
case '4':System.out.print(c[4]);break;
case '5':System.out.print(c[5]);break;
case '6':System.out.print(c[6]);break;
case '7':System.out.print(c[7]);break;
case '8':System.out.print(c[8]);break;
case '9':System.out.print(c[9]);break;
case '0':System.out.print(c[0]);break;
default:break;
}
}
}
catch (IOException e)
{
e.printStackTrace();
}

}

}
谢谢你选我为答案.

扩展阅读:javascript入门 ... java 实体转换成json ... java 强制类型转换 ... jade英文版的怎么调成中文 ... java和c 先学哪个 ... java日期转换成数字 ... java utf-8编码转换中文 ... java 怎么输出汉字 ... java字母转换为数字 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网