JAVA疯狂讲义 第四版 课后习题 第四章 4.5
出来混总要还的..
最近在把《疯狂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相关推荐
- 现代操作系统英文第四版课后习题答案——第二章
@T现代操作系统第四版参考答案 现代操作系统英文第四版第二章参考答案--进程 先更新第二章的答案,习惯中文的童鞋请左转百度翻译 Solution for chapter 2 The transitio ...
- 化工原理第四版课后习题答案
化工原理第四版课后习题答案
- 数学物理方法 高教 第四版 课后习题答案
数学物理方法 高等教育出版社 第四版 课后习题答案 课后习题答案下载地址 链接:https://pan.baidu.com/s/1KqePoJ8AXb4vAxXadOCfCg 提取码:73um 如果链 ...
- 尽信书,不如无书。java的包装类Integer的深入理解及特殊情况(以及java疯狂讲义第5版170页中的错误)
1.通常情况下,两个包装类型只有在两个引用指向同一对象时,使用 == 进行比较时才会返回true 例如: Double do1 = Double.valueOf(1.23); Double do2 = ...
- 算法第四版课后习题答案 西安电子科技大学 计算机学院 算法课
来源于西电计算机15级学长学姐,算法第四版课后习题答案 西安电子科技大学 计算机学院 算法课. 再推荐一个好的看答案的地方,每一题都有,只是还没有更新完成. 地址:https://alg4.ike ...
- 算法竞赛入门经典第二版课后习题答案第二章
算法竞赛入门经典第二版课后习题答案 第二章 习题2-1水仙花数 输出100-999中的所有水仙花数.若三位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数.例如153=1^3+5^3+3^ ...
- JAVA大学实用教程(第四版)课后习题三、四章答案(自整理)
第三章 1.下列System.out.printf输出的结果是什么? int a=100, x,y; x=++a; y=a-- System.out.printf("%d, %d,%d&qu ...
- JAVA大学实用教程(第四版)课后习题一、二章答案及解析(自整理)
第一章 2."java编译器将源文件编译生成的字节码文件是机器码"这句话正确吗? 答:不正确 解析: java中,字节码是CPU构架(JVM)的具有可移植性的机器语言.机器码(ma ...
- 《数据库系统概论》第四版课后习题答案
第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答: ( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其 ...
- 计算机网络第七版课后习题-第四章网络层-习题中的简答题
1,网络层向上提供的服务有哪两种?试比较其优缺点. 网络层向运输层提供 "面向连接"虚电路(Virtual Circuit)服务或"无连接"数据报服务. 前者预 ...
最新文章
- LeetCode简单题之判断能否形成等差数列
- 【Java】 leetCode 删除链表中等于给定值 val 的所有节点。
- Keras【Deep Learning With Python】实现线性回归模型
- mysql:视图,触发器,事务,存储过程,函数
- SQL Server Mysql 对null值理解的不同
- [YTU]_1063 (输入三个整数,按由小到大的顺序输出)
- 【网址收藏】hexo博客主题收藏
- java插件获取首选项_Eclipse RCP 中创建自定义首选项,并能读取首选项中的值
- Android打开jsp页面,如何确定是通过jsp页面上的Android设备还是IOS设备访问网页
- dedecms织梦模板|绿色仿下载吧网站织梦dede模板源码
- 为什么别的手机都能接收wifi,而红米手机却收不到?
- python语言入门-Python语言入门详解!快速学成Python!
- UIDevice获取设备数据以及如何获取应用信息
- 一张图看懂阿里云智能媒体管理产品 1
- [高效Mac] 多显示器快速切换鼠标焦点和移动窗口
- 大三,在软件工程学习上的感悟
- iai控制器服务器ON信号,IAI电缸产品控制方法的知识.pdf
- 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
- mysql复制sql语句_MySQL复制表结构 表数据sql语句总结
- 计算几何 - 你绝对找不到比这更好的计算几何