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,使之只显示非零的币值单位,用单词的单数形式显示一个单位,复数形式显示多于一个的单位的值相关推荐

  1. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金

    **3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票.程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金 题目 题目概述 破题 代码 题目 题目概述 **3.15(游戏:彩票) ...

  2. Java黑皮书课后题第5章:**5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票。这两位数是不同的

    5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票.这两位数是不同的 题目 题目概述 程序清单3-8(非本题代码) 代码 运行结果 题目 题目概述 5.32(游戏:彩票)修改程序清单3-8 ...

  3. Java黑皮书课后题第8章:*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的。重写该程序,通过检验是否每行、每列、每个小方盒中具有

    *8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的.重写该程序 题目 题目描述 程序清单8-4 破题 代码 题目 题目描述 *8.24 ...

  4. Java黑皮书课后题第6章:*6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个

    6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个 题目 题目描述 程序清单6-10 破题 代码 运行实例 题 ...

  5. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  6. 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+-) ...

  7. Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入

    *4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数.对于不正确的输入数字,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.11 ...

  8. Java黑皮书课后题第5章:*5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数

    5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数 题目 题目概述 破题 运行示例(要求) 代码 题目 题目概述 5.43(数学:组合)编写程序,显示从 ...

  9. Java黑皮书课后题第5章:**5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值。(不要是使用Java的Integer类的任何方法)

    **5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.(不要是使用Java的Integer类的任何方法) 题目 题目概述 破题 代码 运行示例 题目 题目概述 * ...

  10. Java黑皮书课后题第5章:**5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值(不要使用Integer.toBinaryString(int)方法)

    5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.37(十进制转二进制)编写程序,提示用户输入一个十进制 ...

最新文章

  1. 统计ES性能的python脚本
  2. 在linux上配置unixODBC和FreeTDS访问MS SQL Server.
  3. 40种Lightbox效果收集
  4. Xshell修改颜色(xshell配色)
  5. BZOJ 2458 最小三角形(分治)
  6. 前端学习(3188):ant-design的icon图标
  7. Linux下修改Tomcat默认端口
  8. Android音频开发(六)音频编解码之初识MediaCodec上
  9. 从零开始学前端:表单制作 --- 今天你学习了吗?(CSS:Day05)
  10. cartographer探秘之文章索引
  11. 年度回顾 | 2019 年的 Apache Flink(文末有福利)
  12. Atitit.故障排除系列-----apache 不能启动的排除
  13. 图像处理(四) Sobel边缘检测与canny边缘检测对比
  14. 机器人开发--有刷电机 与 无刷电机
  15. 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后打不开屏幕怎么办
  16. 超详细的Android APP 集成 PayPal 境外支付 信用卡 借记卡 支付,支付宝 微信海外 境外支付
  17. 操作系统-文件存储空间管理
  18. c语言颜色代码渐变色,Arduino中LED灯实现256中颜色的渐变
  19. python + opencv 创建简单渐变色
  20. 颜色在计算机中的存储和显示详解

热门文章

  1. 设c语言中 一个int型数据库,最新真实全国二级C选择题真题第1套
  2. 与数学实验第二版艾冬梅_吉林省实验繁荣新初一师资大起底,快来看看娃的老师长啥样?...
  3. 1771: 书架整理(dp)
  4. 你不知道的CDN圈内黑话有哪些?
  5. T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践
  6. Flink SQL 的 9 个示例
  7. java 转jsp_【转】JSP三种页面跳转方式
  8. C#-析构方法与构造方法 087
  9. 在某游戏公司面试游戏运营的感受
  10. Java工程师学习步骤