题目:编写一个程序将浮点数转换为人民币读法,例如,将1006.333转换为壹千零陆元叁角叁分!!!
以下是楼主的解答方法,希望朋友们能帮忙优化以下本程序,同时提出一些本程序中的问题,楼主在这里不甚感激!!!
import java.util.Scanner;
public class Num2Rmb {
//定义一个人民币读法数组
private String [] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//定义一个单位数组
private String [] unitArr={"十","百","千"};
//定义一个人民币单位
private String [] unitRmb={"元","角","分"};
public String Str="";
public void readNum(float num)
{
//提取浮点数整数部分
int numInt = (int)num;
//提取小数部分
int numDec = Math.round((num-numInt)*100);
//将整数部分和小数部分合并成一个字符串
String str = ""+numInt+numDec;
int numLen=str.length();
String numRmb = "";
//扫描字符串每一个字符
for(int i=0;i<numLen;i++)
{
int numCh = str.charAt(i)-48;
//先读取整数部分
if(i>=0&&i<3&&numCh!=0)
{
numRmb += (hanArr[numCh]+unitArr[2-i]);
}
//判断第2位和第3位均为0的情况!!!
else if(i==1&&numCh==0)
{
int j=i+1;
if(numCh==0)
{
numRmb +="";
}
else
{
numRmb += "零";
}
}
//判断后3位均为0的情况!!!
else if(i==2&&numCh==0)
{
int j=i+1;
if(numCh==0)
{
numRmb += "";
}
else
{
numRmb += "零";
}
}
else if(i==3&&numCh==0)
{
numRmb += "";
}
else if(i==3)
{
numRmb += hanArr[numCh];
}
}
numRmb += unitRmb[0];
//再读取小数部分
for(int j=4;j<numLen;j++)
{
int numCh = str.charAt(j)-48;
if(0<numDec&&numDec<10)
{
numRmb += "零";
numRmb += (hanArr[numCh]+unitRmb[j-2]);
}
else if(numDec>=10)
{
if(numCh!=0)
numRmb += (hanArr[numCh]+unitRmb[j-3]);
else
numRmb += "";
}
}
System.out.println(numRmb);
}
public static void main(String[] args) {
System.out.println("请输入需要转换的4位浮点数!");
//读取键盘输入
Scanner scanner = new Scanner(System.in);
//输入一个浮点数
float num = scanner.nextFloat();
//判断输入是否合法
if(num>=1000&&num<10000)
{
Num2Rmb NR = new Num2Rmb();
NR.readNum(num);
}
else
{
System.out.println("对不起!您的输入有误!!!");
}
}
}
分享到:
相关推荐
控制台五子棋是本书介绍的第一个项目,它帮助读者从基础入手,理解Java程序设计和业务逻辑的处理。五子棋作为一个古老的游戏,拥有简单的规则和丰富的游戏策略,是程序设计中常用的练习项目。本章通过实现控制台版本...
疯狂Java讲义第二版配套光盘中的源码。 ------------------------------------------- 《疯狂Java讲义》 配书光盘 版权所有,侵权必究 2011年12月 _____________________________________________________...
《Java疯狂讲义》是一本深受Java初学者和进阶者喜爱的教材,它全面而深入地涵盖了Java语言的核心概念和技术。这本书的课后习题答案对于学习者来说是宝贵的资源,可以帮助他们检验自己的理解,巩固所学知识,并解决...
(5) 因为本书第1版有些读者提出关于《疯狂Java讲义》课后习题标准答案的问题, 因此本书光盘根目录下包含一个project_codes文件夹,该文件夹里包含了疯狂 Java联盟的杨恩雄编写的《疯狂Java实战演义》一书的光盘...
《疯狂Java讲义》的课后答案详尽解答了书中的练习题,帮助读者验证自己的理解,而光盘内容的示例代码和补充资料则为实践提供了丰富的素材。通过学习这本书,读者不仅能深入理解Java语言,还能获得实际编程经验,为...
【JAVA讲义(唐大仕版)课后题答案】是针对学习Java编程语言的学生们提供的参考资料,由知名讲师唐大仕编写的讲义配套练习题的答案集合。这份资料涵盖了多个章节的练习题,旨在帮助学生巩固课堂所学,深化对Java语言...
(5) 因为本书第1版有些读者提出关于《疯狂Java讲义》课后习题标准答案的问题, 因此本书光盘根目录下包含一个project_codes文件夹,该文件夹里包含了疯狂 Java联盟的杨恩雄编写的《疯狂Java实战演义》一书的光盘...
《人工智能导论(第4版)》是一本深入探讨人工智能领域的权威教材,旨在为学习者提供全面、系统的人工智能理论知识与实践技能。作为一本第4版的更新书籍,它反映了近年来人工智能领域的重要发展和最新研究成果。配套...
12. **案例分析**:提供的“java2实用教程(第2版)程序代码.doc”可能是为了配合理论教学,提供了一些实际项目或练习的代码示例,有助于学习者将理论知识转化为实践。 “java2实用教程电子教案.pdf”和“清华教案...
在"高教类课件:信息技术导论(第2版).zip"这个压缩包中,我们可以期待找到一系列与信息技术相关的教学材料,这些材料可能包括: 1. **电子讲义**:详细的课程大纲、PPT课件,通常包含了各个主题的概述、关键概念...
【标题】"Accp5.0 S2之大学习2" 涉及的是北大青鸟的ACCP5.0软件工程师培训课程的第二阶段学习内容。这个阶段的学习主要是为了提升学员在编程和软件开发方面的技能,以适应不断变化的IT行业需求。 【描述】提到的...