一亿以内的阿拉伯数字大小写的转化
2013-08-30 09:00
134 查看
package com.cyb.syn;
/**
* * 将10亿以内的阿拉伯数字转成汉字大写形式 *
*
* @author xizhenyin *
*/
public class CnUpperCaser { // 整数部分
private String integerPart;
// 小数部分
private String floatPart;
// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
private static final char[] cnNumbers = { '零', '壹', '贰', '叁', '肆', '伍',
'陆', '柒', '捌', '玖' };
// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series = { '元', '拾', '百', '仟', '万', '拾', '百','仟','亿' };//9位 9 8 7 6 5 4 3 2 1
// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series2 = { '亿','仟','百','拾','万','仟','百','拾','元'};
/**
* * 构造函数,通过它将阿拉伯数字形式的字符串传入 *
*
* @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]);//
//sb.append(series2[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.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());
}
}
/**
* * 将10亿以内的阿拉伯数字转成汉字大写形式 *
*
* @author xizhenyin *
*/
public class CnUpperCaser { // 整数部分
private String integerPart;
// 小数部分
private String floatPart;
// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
private static final char[] cnNumbers = { '零', '壹', '贰', '叁', '肆', '伍',
'陆', '柒', '捌', '玖' };
// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series = { '元', '拾', '百', '仟', '万', '拾', '百','仟','亿' };//9位 9 8 7 6 5 4 3 2 1
// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series2 = { '亿','仟','百','拾','万','仟','百','拾','元'};
/**
* * 构造函数,通过它将阿拉伯数字形式的字符串传入 *
*
* @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]);//
//sb.append(series2[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.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());
}
}
相关文章推荐
- Java学习笔记 实现阿拉伯数字(一亿以内)转换为中文繁体数字
- 阿拉伯数字转化为中文(php最基础的东西)
- Leetcode#13. Roman to Integer (罗马数字转化阿拉伯数字)
- 转换人民币大小金额(阿拉伯数字表示的RMB变成汉字RMB)
- 将字符串中的中文(英文)字符串转化为阿拉伯数字
- java代码中将金额阿拉伯数字转化为中文大写
- 转化十亿以内的人民币数字为大写格式
- 如何将阿拉伯数字每三位一逗号分隔,如:15000000转化为15,000,000
- 用C#实现将大写日期(年/月/日)转化为小写日期(阿拉伯数字的)
- iOS 算法之:阿拉伯数字转化为汉语数字
- 罗马字符转化为阿拉伯数字
- 编了一个简单的把阿拉伯数字转化成中文表示的程序,很粗糙,欢迎大家优化!!!
- iOS阿拉伯数字转化为中文数字
- Python将阿拉伯数字转化为中文大写
- Vue.js阿拉伯数字转化成人民币的中文
- Javascript 阿拉伯数字转化中国大写数字
- leetcode_13. Roman to Integer 罗马数字转化为阿拉伯数字
- 汉字数目与阿拉伯数字转化之一
- js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
- java实现将一个键盘输入的阿拉伯数字转化成中文输出