出来混总要还的..
最近在把《疯狂JAVA讲义》再看一遍,书真的是要多读几遍 每次读都会有不同的收获和感受
以往我都只是看看课后题 从没做过,所以这次我打算做一遍一些有意义的题目
应该是比较low的,但是毕竟是个学习的过程,记录一下,以后再翻开来看看。
题目是:编写程序,将浮点数转换成人命币读法的字符串。
直接上代码 也比较简单。稍稍改编了一下。

package chapter4;import java.util.Arrays;
import java.util.Scanner;public class ChangeRMBFromFloatToString {private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};private String[] unitArr = {"分","角","元","十","百","千","万",""};//private String[] unitDecimalArr = {"分"}//这里直接用long保留整数部分了private String[] divide(double num){long zheng =  (long)num;long xiao = Math.round((num - zheng) * 100);return new String[]{zheng + "", String.valueOf(xiao)};      }/** 这里设计使用一个flag来做分割 整数部分和分数部分* 本来想把单位分为两个数组 在处理的时候 将unitArr这个数组分成* 两个一个是{"元","十","百","千","万"} 一个是{"分","角"}* 在处理不同的部分时传入 不同的数组* 程序 还是不完整 要在result那边修修补补* 等有空了再改改* */private String toHanStr(String numStr,int flag){String result = "";int numLen = numStr.length();if(flag == 1) {for (int i = 0 ; i < numLen ; i++ ){int num = numStr.charAt(i) - 48;if ( i != numLen - 1 && num != 0){result += hanArr[num] + unitArr[numLen - i + 1];}else {result += hanArr[num];}}result = result + unitArr[2];}else {for (int i = 0 ; i < numLen ; i++ ){int num = numStr.charAt(i) - 48;if ( i != numLen - 1 && num != 0){result += hanArr[num] + unitArr[numLen - i -1];}else {result += hanArr[num];}}result = result + unitArr[0];}return result;}/** 去除多个零* 运用方法是遍历每个字符* 前一个和后一个 甚至后几个做对比* 因为这里我们有千  万 这种单位做隔,因此仅会出现 连续多个零的情况* 如果相同 则跳过* 如果不同 则将 j的值 赋值给i 即i也跳过那么多个重复的零* 最后将newString返回* */public static String removeZero(String oldString) {String newString = "";int length = oldString.length();int i = 0;int j = i + 1;newString = newString + oldString.charAt(i);for(;j<length;) {if(oldString.charAt(i)==oldString.charAt(j)) {j = j+1;}else {i = j;j += 1;newString = newString + oldString.charAt(i);}}return newString;}public static void main(String[] args) {        ChangeRMBFromFloatToString nr = new ChangeRMBFromFloatToString();Scanner scanner = new Scanner(System.in);while(true) {System.out.println("请输入要换算的数字,整数部分请不要超过五位数哦哦!");double inputNumber = scanner.nextDouble();String[] zhengPart = nr.divide(inputNumber);String integerPart = zhengPart[0];String decimalPart = zhengPart[1];//加个判断吧 整数长度不能过长if(integerPart.length() > 5) {System.out.println("过长了  请重新输入");}else {System.out.println("整数部分:"+nr.toHanStr(zhengPart[0], 1));System.out.println("分数部分:"+nr.toHanStr(zhengPart[1], 0));String all = nr.toHanStr(zhengPart[0], 1) + nr.toHanStr(zhengPart[1], 0);System.out.println(all);System.out.println(removeZero(all));}}}
}

结果

JAVA疯狂讲义 第四版 课后习题 第四章 4.5相关推荐

  1. 现代操作系统英文第四版课后习题答案——第二章

    @T现代操作系统第四版参考答案 现代操作系统英文第四版第二章参考答案--进程 先更新第二章的答案,习惯中文的童鞋请左转百度翻译 Solution for chapter 2 The transitio ...

  2. 化工原理第四版课后习题答案

    化工原理第四版课后习题答案

  3. 数学物理方法 高教 第四版 课后习题答案

    数学物理方法 高等教育出版社 第四版 课后习题答案 课后习题答案下载地址 链接:https://pan.baidu.com/s/1KqePoJ8AXb4vAxXadOCfCg 提取码:73um 如果链 ...

  4. 尽信书,不如无书。java的包装类Integer的深入理解及特殊情况(以及java疯狂讲义第5版170页中的错误)

    1.通常情况下,两个包装类型只有在两个引用指向同一对象时,使用 == 进行比较时才会返回true 例如: Double do1 = Double.valueOf(1.23); Double do2 = ...

  5. 算法第四版课后习题答案 西安电子科技大学 计算机学院 算法课

    来源于西电计算机15级学长学姐,算法第四版课后习题答案 西安电子科技大学 计算机学院   算法课. 再推荐一个好的看答案的地方,每一题都有,只是还没有更新完成. 地址:https://alg4.ike ...

  6. 算法竞赛入门经典第二版课后习题答案第二章

    算法竞赛入门经典第二版课后习题答案 第二章 习题2-1水仙花数 输出100-999中的所有水仙花数.若三位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数.例如153=1^3+5^3+3^ ...

  7. JAVA大学实用教程(第四版)课后习题三、四章答案(自整理)

    第三章 1.下列System.out.printf输出的结果是什么? int a=100, x,y; x=++a; y=a-- System.out.printf("%d, %d,%d&qu ...

  8. JAVA大学实用教程(第四版)课后习题一、二章答案及解析(自整理)

    第一章 2."java编译器将源文件编译生成的字节码文件是机器码"这句话正确吗? 答:不正确 解析: java中,字节码是CPU构架(JVM)的具有可移植性的机器语言.机器码(ma ...

  9. 《数据库系统概论》第四版课后习题答案

    第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答: ( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其 ...

  10. 计算机网络第七版课后习题-第四章网络层-习题中的简答题

    1,网络层向上提供的服务有哪两种?试比较其优缺点. 网络层向运输层提供 "面向连接"虚电路(Virtual Circuit)服务或"无连接"数据报服务. 前者预 ...

最新文章

  1. LeetCode简单题之判断能否形成等差数列
  2. 【Java】 leetCode 删除链表中等于给定值 val 的所有节点。
  3. Keras【Deep Learning With Python】实现线性回归模型
  4. mysql:视图,触发器,事务,存储过程,函数
  5. SQL Server Mysql 对null值理解的不同
  6. [YTU]_1063 (输入三个整数,按由小到大的顺序输出)
  7. 【网址收藏】hexo博客主题收藏
  8. java插件获取首选项_Eclipse RCP 中创建自定义首选项,并能读取首选项中的值
  9. Android打开jsp页面,如何确定是通过jsp页面上的Android设备还是IOS设备访问网页
  10. dedecms织梦模板|绿色仿下载吧网站织梦dede模板源码
  11. 为什么别的手机都能接收wifi,而红米手机却收不到?
  12. python语言入门-Python语言入门详解!快速学成Python!
  13. UIDevice获取设备数据以及如何获取应用信息
  14. 一张图看懂阿里云智能媒体管理产品 1
  15. [高效Mac] 多显示器快速切换鼠标焦点和移动窗口
  16. 大三,在软件工程学习上的感悟
  17. iai控制器服务器ON信号,IAI电缸产品控制方法的知识.pdf
  18. 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
  19. mysql复制sql语句_MySQL复制表结构 表数据sql语句总结
  20. 计算几何 - 你绝对找不到比这更好的计算几何

热门文章

  1. 情人节程序员用HTML网页表白【生日祝福】 HTML5生日祝福网页源码 HTML+CSS+JavaScript
  2. 网页中打开msn窗口方法
  3. python爬取百度迁徙_Python爬虫抓取百度慧眼迁徙大数据(一)
  4. php中文分词nlp,几种常见的PHP中文分词系统
  5. 细说PHP电子书pdf下载
  6. 21天学通C语言-学习笔记(8)
  7. PDF417二维条码生成器 C++
  8. 吉林大学超星学习通02(2)
  9. ffmpeg: 一款跨平台开源媒体格式转换器
  10. 修改虚拟机设置过游戏检测