Java金额转换_阿拉伯数字转换成中国传统形式

这个题目我在网上看到有好多种做法,我自己也想出了一种做法;不过因为时间不够,只能转换整数,没把角分弄进去。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/*
 * 思路:
 * 1.定义两张表,存储中文数字和货币单位。
 * 2.键盘录入使用IO流的BufferedReader进行接收键盘录入。
 * 3.把录入的阿拉伯数字弄成字符数组,把每个数字所在位置的角标对着中文数字的表进行转换,
 *    转换完后再从对应的位置插入货币单位。
 * 4.把格式进行修正匹配后打印输出。
 */
public class MoneyConvert {

	public static void main(String[] args) {
		//创建中文大写数字的表和货币单位的表
		String[] cnNum = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒","捌", "玖"};
		String[] unit = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};

		System.out.println("请输入金额:");

		//创建流对象,用于接收键盘录入的数据
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		try {
			//把键盘接收的数据打散成字符数组
			char[] chNumArr = in.readLine().toCharArray();

			//把阿拉伯数字转换为中文的大写数字
			String[] convertNum = new String[chNumArr.length];
			for(int x = 0; x < chNumArr.length; x++) {
				int num = Integer.parseInt(chNumArr[x]+"");
				convertNum[x] = cnNum[num];
			}

			//嵌入货币单位到转换好的中文大写数字里去
			StringBuilder container = new StringBuilder("圆整");
			for(int x = convertNum.length -1, y = 0; x >=0; x--, y++) {
				String num = convertNum[x];
				if(num.equals("零")) {
					//判断数位是否是仟万亿的位置,是则插入单位
					if(y == 4 || y == 8)
						container.insert(0, num+unit[y]);
					else
						container.insert(0, num);
				} else {
					container.insert(0, num+unit[y]);
				}
			}

			//格式修正
			String put = container.toString();
			put = put.replaceAll("佰零+万", "佰万");
			put = put.replaceAll("佰零+亿", "佰亿");
			put = put.replaceAll("仟零+万", "仟万");
			put = put.replaceAll("仟零+亿", "仟亿");
			put = put.replaceAll("零+", "零");
			put = put.replaceAll("零万", "零");
			put = put.replaceAll("拾零", "拾");
			put = put.replaceAll("零圆", "圆");

			//完成后打印输出
			System.out.println("该金额的大写形式为:"+put);

		} catch (IOException e) {
			e.printStackTrace();
		}
		//因为是键盘录入,接收完数据后流会自然断开了,所以无需调用关流资源的方法了
	}

}

还在学习中,写得可能不太好。

时间: 2024-12-28 01:12:24

Java金额转换_阿拉伯数字转换成中国传统形式的相关文章

金额转换,阿拉伯数字的金额转换成中国传统输出。

1 package sfbc; 2 3 import java.text.DecimalFormat; 4 import java.util.HashMap; 5 import java.util.Map; 6 /** 7 * 金额转换,阿拉伯数字的金额转换成中国传统输出. 8 * @author trfizeng 9 * 10 */ 11 public class FormateMoneyCN { 12 // 阿拉伯数字对应的大写汉字 13 public static final Map<St

笔试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出

收集这道题目原因是以前做过,但是实现的很麻烦,这次看到别人写的感觉简单易懂. 从一个pdf看到,出处就不贴了 = .= public class RenMingBi { private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; private static final char[] units = new char[] { '元', '拾', '佰', '

金额转换——阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)

public class RenMingBi { private static final char[] data = new char[]{ '零','壹','贰','叁','肆','伍','陆','柒','捌','玖' }; private static final char[] units = new char[]{ '元','拾','佰','仟','万','拾','佰','仟','亿' }; public static void main(String[] args) { // TODO

阿拉伯数字转换成中文大写

package Demo;public class Money{ public static void main(String args[]) { Money mon = new Money(); System.out.println(mon.change("124")); } //把"1"转化成1时用下标找TOBIG[1]就是对应的 private static final String[] TOBIG = new String[] { "零"

oracle改进之将阿拉伯数字转换成中文数字

本博客是自己在学习和工作途中的积累与总结. 将阿拉伯数字转换成中文汉字,方法自定义函数 create or replace function formate(val in number) return varchar2 is res varchar2(6); begin if val=1 then res:='一'; elsif val=2 then res:='二'; elsif val=3 then res:='三'; elsif val=4 then res:='四'; elsif val

Java之格林威治时间格式转换成北京时间格式

Java之格林威治时间格式转换成北京时间格式 package com.mtons.mblog; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class DateUtils { /** * 支持jdk1.6的写法<br/> * 解析2015-12-27T14:20:34+08:00格式类型的时

java各种数据类型之间的转换

1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A. 有叁种方法: 1.) Str

使用json-lib进行Java和JSON之间的转换

1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能. 2. json-lib 主页 : http://json-lib.sourceforge.net/ 3.执行环境 需要以下类库支持 jakarta commons-lang 2.5 jakarta commons-beanutils 1.8.0 jakarta commons-collections 3

java中的进制转换

进制转换 首先是十进制转化为其他进制,如二进制,八进制,十六进制: 它们在java中都有专门的函数可供调用: 如:十进制转化为二进制时调用toBinaryString(); 十进制转化为八进制时调用toOctalString(); 十进制转化为十六进制时调用toHexString(); 代码实现: // 进制转化 public class Main_2 { public static void main(String[] args) { Integer a=new Integer(20); //