import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Transform {
public static void main(String[] args){
String number = "101000001010";
String str1 = null;
String str2 = null;
Map numMap = new HashMap();
numMap.put('0', "零");
numMap.put('1', "壹");
numMap.put('2', "贰");
numMap.put('3', "叁");
numMap.put('4', "肆");
numMap.put('5', "伍");
numMap.put('6', "陆");
numMap.put('7', "柒");
numMap.put('8', "捌");
numMap.put('9', "玖");
//去掉小数位,不进行换算.
if(number.indexOf(".") == -1){
str1 = number;
}else{
str1 = number.substring(0,number.indexOf("."));
str2 = number.substring(number.indexOf(".")+1);
}
System.out.println(str1);
//每隔4位数字,放入到一个集合中.
ArrayList al = new ArrayList();
while(true){
String ss = "";
if(str1.length() >4){
ss = str1.substring(str1.length()-4,str1.length());
str1 = str1.substring(0,str1.length()-4);
al.add(ss);
}else{
ss = str1.substring(0);
for(int k =0;k<(4-str1.length());k++){
ss="0"+ss;
}
al.add(ss);
break;
}
}
String finalStr = "";
//反转集合
Collections.reverse(al);
//拼成最终的字符串.
for(int i =0;i<al.size();i++){
char[] cs =((String)al.get(i)).toCharArray();
if(al.size() == 3 ){
if(i == 0){
finalStr += toChinese(cs, numMap)+"亿";
}else if(i == 1){
if(toChinese(cs, numMap) == ""){
finalStr += "零";
}else{
finalStr += toChinese(cs, numMap)+"万";
}
}else{
finalStr += toChinese(cs, numMap);
}
}else if(al.size() == 2 ){
if(i == 0){
finalStr += toChinese(cs, numMap)+"万";
}else{
finalStr += toChinese(cs, numMap);
}
}else if(al.size() == 1){
finalStr += toChinese(cs, numMap);
}
}
System.out.println(finalStr+"元整");
}
//把4位数字换成汉字.根据排列组合,共有16中不同.
public static String toChinese(char[] cs,Map numMap){
//000x -- 1
if(cs[0]=='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
return (String) numMap.get(cs[3]);
}
//00x0 -- 2
else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[2])+"拾";
}
//0x00 -- 3
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[1])+"佰";
}
//x000 -- 4
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟";
}
//00xx -- 5
else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[2])+"拾" + numMap.get(cs[3]);
}
//0x0x -- 6
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + numMap.get(cs[3]);
}
//x00x -- 7
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + numMap.get(cs[3]);
}
//0xxx -- 8
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//x0xx -- 9
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//xxxx -- 10
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//xxx0 -- 11
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" ;
}
//xx00 -- 12
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" ;
}
//0xx0 -- 13
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾" ;
}
//xx0x -- 14
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2])+numMap.get(cs[3]) ;
}
//x0x0 -- 15
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2])+"拾";
}
//0000 -- 16
else{
return "";
}
}
}
分享到:
相关推荐
1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...
在Java编程中,将阿拉伯数字转化为中文金额大写是一项常见的任务,特别是在财务系统或报表生成中。这个题目要求实现一个程序,能够读取输入的阿拉伯数字字符串,然后将其转换为符合中国会计规范的中文大写金额表示。...
本文将详细阐述“金额阿拉伯数字转换中文大写”的相关知识点。 1. **中文大写数字系统**: - 在中文中,阿拉伯数字1至9对应的中文大写分别是壹、贰、叁、肆、伍、陆、柒、捌、玖。 - 零用汉字零表示,整数位与...
这个特定的项目“C# - 阿拉伯数字金额转换为繁体数字金额”专注于一个常见的财务处理任务,即把通常用阿拉伯数字表示的货币金额转化为繁体中文的表示方式。这在中文环境中特别有用,因为繁体数字在正式的商业文档和...
在描述中提到,虽然网络上有许多关于将阿拉伯数字转换为汉字的教程,但作者决定编写一个相反方向的转换工具,这显示了对特定需求的响应和解决实际问题的能力。 在实现这个功能时,首先需要定义一个汉字金额字典,...
根据提供的文件信息,我们可以深入探讨如何使用JavaScript将阿拉伯数字转换为中文大写,尤其是在非金额场景下的应用。此转换在日常编程中具有广泛的应用场景,例如用于生成合同文本中的日期等。 ### 核心概念 ####...
在Java编程中,将阿拉伯数字转换为中国传统形式的金额表示是一项常见的需求,特别是在财务系统或者银行应用中。这种转换能够使数字更符合中国人的阅读习惯,增加可读性。在这个问题中,我们要处理的是将像...
阿拉伯数字金额转换成汉字金额,比如1000.00 转换成 壹仟元。
在IT行业中,尤其是在财务软件开发或者自动化报表系统中,经常需要将数字转换成中文大写的金额形式,以便符合中国的财务规范。"数字转换成金额大写"是一个常见的需求,特别是在Delphi这样的编程环境中。Delphi是一款...
在IT行业中,尤其是在财务软件开发或者银行系统设计中,经常需要将阿拉伯数字金额转换成大写数字金额,以便于核对、防止错误和提高安全性。这是因为大写数字在视觉上与阿拉伯数字有所区别,可以降低欺诈风险。本例子...
在本文中,我们将深入探讨如何使用C#编程语言创建一个窗体应用程序,该程序能够将输入的阿拉伯数字转换为中文大写。这个功能在财务报表、发票和其他需要以中文大写表示金额的场合非常有用。 首先,我们看到程序的...
SQL Server 是一个功能强大且广泛应用的关系数据库管理系统,而阿拉伯数字转大写中文是一个常见的需求,例如,在财务报表、发票printing等应用场景中,需要将阿拉伯数字转换为大写中文以满足特定的格式要求。...
佛慈悲,应要求给整个下载在我的资源中,其中包含自学习桌面编程以来所找的资料及未完成的部分学习代码,从未完成的开始转入了另一个急需开发软件的研发工作,所以没时间来作这个的继续,打包原封不动提供学习了. ...
总的来说,将阿拉伯数字转换为金额的汉字大写是Java在财务领域中的一项基础应用,它体现了编程语言处理日常业务问题的能力。通过理解并实现这样的功能,开发者不仅可以加深对Java编程的理解,也能更好地服务于财务...
在财务模块的开发中,将数字转换成中文大写是必需的功能之一,尤其是在中国以及使用中文的地区。例如,在开具发票、合同等正式文档时,通常需要将金额数字转换为中文大写形式,以增加文档的正式性和防止篡改。 ####...
阿拉伯数字(1、2、3等)是我们日常使用的数字系统,但在正式的会计文档中,通常需要将这些数字转换为中文大写(壹、贰、叁等),以防止篡改和提高审计准确性。在编程领域,尤其是使用Visual Basic (VB) 这样的语言...
在这个阿拉伯数字到中文数字转换的例子中,我们利用这种模式构建了一个解析系统,它能够理解数字的读法规则,并将其转化为符合中文习惯的表达方式。通过学习和实践这个范例,开发者可以加深对解析器模式的理解,并将...
这是一个可以将阿拉伯数字金额转换为中文大写金额的类,vb.net可用
mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。
在Android开发中,有时我们需要将数字转换为中文或者将金额以大写的格式显示,这在财务应用或一些需要中文表示数字的场景中尤其常见。本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转...