银行考题,将阿拉伯数字转换成大写的汉字模式
例如
123456789.01 -> 壹亿贰千叁百肆十伍万陆千柒百捌十玖元零壹分
假定: 最小到“分” 最大到 “亿”
仿照之前写过的那个 罗马数字与阿拉伯数字转换的程序写的
1.用数组存 壹....
2.用数组存 十 百 千
3.按照“.” 分割 分别处理整数分数 按照“.” 分割 请注意 http://www.iteye.com/topic/165494
4.对“零”的处理
5.正则表达式检验输入有效性 (正则表达式 有必要好好的看看 总结总结 达到能够直接写出来的地步!!!) 后续加上
public class ConvertFromNumericToChinese {
/**
* split 是String的方法 不是StringBuilder的,split(.)的时候的注意问题http://www.iteye.com/topic/165494,
* 然后字符串的高低位问题 "123" 第0位 ‘1’. 第1位 ‘2’ 这样
* @param args
*/
private static String[] chinese = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static String[] units = {"","十","百","千"};
private static Object String;
private static String convert(String num)
{
StringBuilder sb = new StringBuilder(num);
String[] str = num.split("\\.");
if(str.length==1)
{//没有小数
String zheng = convertZheng(str[0]);
return zheng+"元整";
}
else
{//小数情况
String zheng = convertZheng(str[0])+"元";
String fen = convertFen(str[1]);
return zheng+fen;
}
}
private static String convertFen(String str) {
int length = str.length();
String temp ="";
if(length==1)
temp = chinese[Integer.parseInt(str)]+"角";
else{
if(Integer.parseInt(""+str.charAt(0))!=0)
temp = chinese[Integer.parseInt(""+str.charAt(0))]+"角";
else
temp = "零";
temp += chinese[Integer.parseInt(""+str.charAt(1))]+"分";
}
return temp;
}
private static String convertZheng(String str) {
int length = str.length();
int startUderWan=0;
int startY = 0;
String temp = "";//用于拼接字符串 最后返回
if(length>8)
{//上亿了。。。
startY = 1;
temp += chinese[Integer.parseInt(""+str.charAt(0))]+"亿";
}
if(length>4)
{//上万了
String str1 = str.substring(startY,length-4);
startUderWan = startY+startUderWan+str1.length();
List<String> result1 = new ArrayList<String>();
for(int i=0; i<str1.length(); i++)
{
if((""+str1.charAt(i)).equals("0"))
{
result1.add("零");
continue;
}
result1.add(chinese[Integer.parseInt(""+str1.charAt(i))]+units[str1.length()-1-i]);
}
for(int i=0; i<result1.size(); i++)
{
if(result1.get(i).equals("零")&&(i+1)<result1.size()&&result1.get(i+1).equals("零"))
{
continue;
}
temp +=result1.get(i);
}
if(temp.endsWith("零"))
temp = temp.substring(0,temp.length()-1);
if(!temp.endsWith("亿"))//这种情况100005675 不能带 “万”
temp+="万";
}
List<String> result = new ArrayList<String>();
for(int i=startUderWan; i<length; i++)
{
if((""+str.charAt(i)).equals("0"))
{
result.add("零");
continue;
}
result.add(chinese[Integer.parseInt(""+str.charAt(i))]+units[length-1-i]);
}
for(int i=0; i<result.size(); i++)
{
if(result.get(i).equals("零")&&(i+1)<result.size()&&result.get(i+1).equals("零"))
{
continue;
}
temp +=result.get(i);
}
if(temp.endsWith("零"))
temp = temp.substring(0, temp.length()-1);
return temp;
}
private static boolean isValid(String num) {
//后续加上
String matchStr = "。。。。。。。。。。。。";
boolean isValid = num.matches(matchStr);
return isValid;
}
public static void main(String[] args) {
String s = "123456789.01";
String result = convert(s);
System.out.println(result);
}
}
分享到:
相关推荐
承德银行笔试题型考试题面试题大全借鉴.pdf
日照银行作为位于中国山东省日照市的股份制商业银行,自2000年成立以来,已经成长为拥有庞大业务网络和雄厚资本实力的地方性银行。从最初的成立到现在,日照银行不仅在业务上不断创新拓展,更通过吸引战略投资者和...
"数据库考试题 模式分解例题 范式规范化 3NF BCNF" 数据库考试题是数据库管理系统(DBMS)中的一个重要组成部分,对于数据库的管理和使用有着重要的影响。本文将对数据库考试题进行整理和总结,帮助读者更好地理解...
2. 票据金额一致性:根据票据法规,票据金额的中文大写和阿拉伯数字应保持一致。若二者不一致,结算凭证将被视为无效,信用社不应予以受理。因此,选项D正确。 3. "票据法"的适用范围:票据法适用于中华人民共和国...
适合Java设计模式期末考试选择题复习,形式如下: 10.(单选题)Facade(外观)模式的意图是 正确答案: A A.希望简化现有系统的使用方法,你需要定义自己的接口 B.将一个无法控制的现有对象与一个特定借口相匹配。 C....
中国农业银行考试试题.pdf
计算机进制转换月考试题.pdf文件中提供了一些实践题,旨在帮助学生通过实际例子来巩固理解。例如,求十进制数257对应的二进制数。这个问题可以运用十进制转二进制的转换方法来解决,最终得到11101110。通过这些练习...
数字电子技术基础期末考试习题及答案是电子技术领域中的重要考核内容,本资源摘要信息涵盖了数字电子技术基础的主要知识点,包括数字逻辑、数字电路、编码与译码、触发器与寄存器、计数器与移位寄存器、D/A 转换器、...
VCE格式转换器是一款专为考试认证备考设计的工具,主要功能是将PDF题库转换成VCE格式,以便在特定的考试模拟软件中进行练习和复习。VCE(Visual CertExam)是一种广泛用于各类IT认证考试的学习和模拟测试的文件格式...
中国农业银行招聘考试试题及答案中国农业银行招聘考试试题及答案
河北银行笔试题型考试题面试题大全分享.pdf
这份“出纳实务期中考试题”显然旨在测试学生对于出纳基础知识的掌握,包括阿拉伯数字与汉字大写的转换、日期的大写规范以及单据填写的准确性。以下是这些知识点的详细解释: 一、阿拉伯数字的书写与大写数字汉字的...
【检测与转换技术】是自动化领域的重要分支,主要研究对象包括传感器、信号处理、数据转换以及系统接口等。这门学科关注如何有效地获取、处理和转化物理量,如温度、压力、位移、速度等,使之成为可被电子设备处理的...
2022年中国人民银行经济金融类考试题定义.pdf
新旧动能转换考试题及答案.doc
计算机各种进制转换练习题 计算机中的进制转换是计算机科学和信息技术中的一种基本概念。它是指在不同进制系统之间进行数值表示的转换,例如十进制、 二进制、八进制、十六进制等。下面是计算机各种进制转换的练习...
本文将深入分析河北银行招聘笔试的主要内容,详细阐述其中涉及的数学应用问题和几何初步知识,以帮助考生们更好地备战考试。 河北银行的招聘笔试通常涉及多个学科的知识点,但数学应用问题和几何初步知识是其中的...
### 数字电子技术期末考试试题知识点概览 #### 一、填空题知识点 **1. 编码方式** - **余3码(Excess-3 Code)**: 是一种非加权码,它是由8421BCD码的基础上每位加3而得到的。余3码的一个主要优点是可以直接进行...
国科大模式识别与机器学习考题总结 模式识别是指对事物或事件的特征或规律的识别和分类,通过对事物或事件的观察和分析,获取某种信息,并对其进行分类和识别。模式识别在机器学习和人工智能领域中扮演着至关重要的...