Java黑皮书课后题第3章:3.7(金融应用:整钱兑零)修改程序清单2-10,使之只显示非零的币值单位,用单词的单数形式显示一个单位,复数形式显示多于一个的单位的值
3.7(金融应用:整钱兑零)修改程序清单2-10,使之只显示非零的币值单位,用单词的单数形式显示一个单位,复数形式显示多于一个的单位的值
- 题目
- 题目概述
- 程序清单2-10(非本题代码)
- 破题/思路:这道题我思路可能理解比较难,可以自行搜索看其他博客如何处理
- 代码
题目
题目概述
3.7(金融应用:整钱兑零)修改程序清单2-10,使之只显示非零的币值单位,用单词的单数形式显示一个单位,复数形式显示多于一个的单位的值
1美元和1美分:1 dollar and 1 penny
2美元和3美分:2 dollars and 3 pennies
程序清单2-10(非本题代码)
import java.util.Scanner;public class QingDan {public static void main(String[] args) {// Create a ScannerScanner input = new Scanner(System.in);// Receive the amountSystem.out.println("Enter an amount in int, for example 11.56");double amount = input.nextDouble();int remainingAmount = (int)(amount * 100);// Find the number of one dollarsint numberOfOneDollars = remainingAmount / 100;remainingAmount = remainingAmount % 100;// Find the number of quarters in the remaining amountint numberOfQuarters = remainingAmount / 25;remainingAmount = remainingAmount % 25;// Find the number of dimes in the remaining amountint numberOfDimes = remainingAmount / 10;remainingAmount = remainingAmount % 10;// Find the number of nickels in the remaining amountint numberOfNickels = remainingAmount / 5;remainingAmount = remainingAmount % 5;// Find the number of pennies in the remaining amountint numberOfPennies = remainingAmount;// Display resultsSystem.out.println("Your amount" + remainingAmount + " consists of");System.out.println(" " + numberOfOneDollars + " dollars");System.out.println(" " + numberOfQuarters + " quarters");System.out.println(" " + numberOfDimes+ " dimes");System.out.println(" " + numberOfNickels + " nickels");System.out.println(" " + numberOfPennies+ " pennies");}
}
破题/思路:这道题我思路可能理解比较难,可以自行搜索看其他博客如何处理
只需要理解它(清单2-10)的大体框架即可,这种改写题因为给出了很多代码相对也比较简单
理解难点在中间币值的转换,自己带几个数进去就能逐渐掌握每行代码想表达的意思了
对于3.7,我的思路是先获取到数据并进行处理转换后,在输出部分每种币值分三种情况(为0、为1、大于1)使用print()函数输出内容即可
如何在输出的两个币值之间加and、留空格?
因为每个单位输出都存在不确定性,不能直接print()函数中简单地添加and并留出空格
笔者考虑到可以用boolean打标进行判断
假设dollar前先标记为true,那么后续所有输出的地方都将这个标记赋值为false
那么一旦读到这个标记是false,说明前面已经有输出,即前面留出空格并加上and
代码
import java.util.Scanner;public class Test3_7 {public static void main(String[] args) {// 接收数据Scanner input = new Scanner(System.in);System.out.println("Enter an amount in int, for example 11.56");double amount = input.nextDouble();// 转换单位+打标int remainingAmount = (int)(amount * 100);boolean bool = true;// Find the number of one dollarsint numberOfOneDollars = remainingAmount / 100;remainingAmount = remainingAmount % 100;if(numberOfOneDollars > 1) {System.out.print(numberOfOneDollars + " dollars");bool = false;}else if(numberOfOneDollars == 1) {System.out.print(numberOfOneDollars + " dollar");bool = false;}// Find the number of quarters in the remaining amountint numberOfQuarters = remainingAmount / 25;remainingAmount = remainingAmount % 25;if(numberOfQuarters > 1 && bool == true) {System.out.print(numberOfQuarters + " quarters");bool = false;}else if(numberOfOneDollars == 1 && bool == true) {System.out.print(numberOfQuarters + " quarter");bool = false;}else if(numberOfQuarters > 1 && bool == false)System.out.println(" and " + numberOfQuarters + " quarters");else if(numberOfQuarters == 1 && bool == false)System.out.println(" and " + numberOfQuarters + " quarter");// Find the number of dimes in the remaining amountint numberOfDimes = remainingAmount / 10;remainingAmount = remainingAmount % 10;if(numberOfDimes > 1 && bool == true) {System.out.print(numberOfDimes + " dimes");bool = false;}else if(numberOfDimes == 1 && bool == true) {System.out.print(numberOfDimes + " dime");bool = false;}else if(numberOfDimes > 1 && bool == false)System.out.println(" and " + numberOfDimes + " dimes");else if(numberOfDimes == 1 && bool == false)System.out.println(" and " + numberOfDimes + " dimes");// Find the number of nickels in the remaining amountint numberOfNickels = remainingAmount / 5;remainingAmount = remainingAmount % 5;if(numberOfNickels > 1 && bool == true) {System.out.print(numberOfNickels + " nickels");bool = false;}else if(numberOfNickels == 1 && bool == true) {System.out.print(numberOfNickels + " nickel");bool = false;}else if(numberOfNickels > 1 && bool == false)System.out.println(" and " + numberOfNickels + " nickels");else if(numberOfNickels == 1 && bool == false)System.out.println(" and " + numberOfNickels + " nickel");// Find the number of pennies in the remaining amountint numberOfPennies = remainingAmount;if(numberOfPennies > 1 && bool == true)System.out.print(numberOfPennies + " pennies");else if(numberOfPennies == 1 && bool == true)System.out.print(numberOfPennies + " penny");else if(numberOfPennies > 1 && bool == false)System.out.println(" and " + numberOfPennies + " pennies");else if(numberOfPennies == 1 && bool == false)System.out.println(" and " + numberOfPennies + " penny");}
}
Java黑皮书课后题第3章:3.7(金融应用:整钱兑零)修改程序清单2-10,使之只显示非零的币值单位,用单词的单数形式显示一个单位,复数形式显示多于一个的单位的值相关推荐
- Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金
**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票.程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金 题目 题目概述 破题 代码 题目 题目概述 **3.15(游戏:彩票) ...
- Java黑皮书课后题第5章:**5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票。这两位数是不同的
5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票.这两位数是不同的 题目 题目概述 程序清单3-8(非本题代码) 代码 运行结果 题目 题目概述 5.32(游戏:彩票)修改程序清单3-8 ...
- Java黑皮书课后题第8章:*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的。重写该程序,通过检验是否每行、每列、每个小方盒中具有
*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的.重写该程序 题目 题目描述 程序清单8-4 破题 代码 题目 题目描述 *8.24 ...
- Java黑皮书课后题第6章:*6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个
6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个 题目 题目描述 程序清单6-10 破题 代码 运行实例 题 ...
- Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期
Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...
- Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)
Java黑皮书课后题第1章:1.7(求π的近似值) 题目描述 代码 代码块 评析 修改日志 题目描述 可以使用以下公式计算π: [手动空格]π=4*(1-1/3+1/5-1/7+1/9-1/11+-) ...
- Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数.对于不正确的输入数字,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.11 ...
- Java黑皮书课后题第5章:*5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数
5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数 题目 题目概述 破题 运行示例(要求) 代码 题目 题目概述 5.43(数学:组合)编写程序,显示从 ...
- Java黑皮书课后题第5章:**5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值。(不要是使用Java的Integer类的任何方法)
**5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.(不要是使用Java的Integer类的任何方法) 题目 题目概述 破题 代码 运行示例 题目 题目概述 * ...
- Java黑皮书课后题第5章:**5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值(不要使用Integer.toBinaryString(int)方法)
5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.37(十进制转二进制)编写程序,提示用户输入一个十进制 ...
最新文章
- 统计ES性能的python脚本
- 在linux上配置unixODBC和FreeTDS访问MS SQL Server.
- 40种Lightbox效果收集
- Xshell修改颜色(xshell配色)
- BZOJ 2458 最小三角形(分治)
- 前端学习(3188):ant-design的icon图标
- Linux下修改Tomcat默认端口
- Android音频开发(六)音频编解码之初识MediaCodec上
- 从零开始学前端:表单制作 --- 今天你学习了吗?(CSS:Day05)
- cartographer探秘之文章索引
- 年度回顾 | 2019 年的 Apache Flink(文末有福利)
- Atitit.故障排除系列-----apache 不能启动的排除
- 图像处理(四) Sobel边缘检测与canny边缘检测对比
- 机器人开发--有刷电机 与 无刷电机
- 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后打不开屏幕怎么办
- 超详细的Android APP 集成 PayPal 境外支付 信用卡 借记卡 支付,支付宝 微信海外 境外支付
- 操作系统-文件存储空间管理
- c语言颜色代码渐变色,Arduino中LED灯实现256中颜色的渐变
- python + opencv 创建简单渐变色
- 颜色在计算机中的存储和显示详解