You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java精确找零(Exact Change)代码问题:避免输出值为0的币种

Java精确找零0值币种输出问题解决方案

修改思路

当前代码的核心问题是计算完每个币种的数量后直接执行输出,未过滤数量为0的情况,只需给每个输出语句增加非0判断即可实现需求,同时可修复原代码存在的单复数错误、币种拼写错误等小问题。

修改后完整代码

import java.util.Scanner; 

public class LabProgram 
{
   public static void main(String[] args) 
   {
      Scanner scnr = new Scanner(System.in);
      int totalChange = scnr.nextInt();
      int pennies;
      int nickels;
      int dimes;
      int quarters;
      int dollars;
  
      if(totalChange == 0)
      {
          System.out.println("No Change");
          System.exit(0);
      }
      dollars = totalChange / 100;
      totalChange %= 100;
      if (dollars > 0) {
          System.out.println(dollars + (dollars == 1 ? " Dollar" : " Dollars"));
      }
      quarters = totalChange / 25;
      totalChange %= 25;
      if (quarters > 0) {
          System.out.println(quarters + (quarters == 1 ? " Quarter" : " Quarters"));
      }
      dimes = totalChange / 10;
      totalChange %= 10;
      if (dimes > 0) {
          System.out.println(dimes + (dimes == 1 ? " Dime" : " Dimes"));
      }
      nickels = totalChange / 5;
      totalChange %= 5;
      if (nickels > 0) {
          System.out.println(nickels + (nickels == 1 ? " Nickel" : " Nickels"));
      }
      pennies = totalChange;
      if (pennies > 0) {
          System.out.println(pennies + (pennies == 1 ? " Penny" : " Pennies"));
      }
      scnr.close();
   }
}

主要修改点

  • 每个币种计算完成后新增if (数量 > 0)判断,只有数量不为0时才执行输出,彻底解决0值币种被打印的问题
  • 新增单复数适配逻辑,避免出现1 Dimes这类不符合英文表达习惯的输出
  • 修正了原代码中5美分硬币的拼写错误(原代码写为Nickles,正确拼写为Nickels)
  • 简化了1美分硬币的计算逻辑,取余后剩余的金额直接就是1美分的数量,无需额外做除法和取余操作
  • 补充了Scanner资源关闭逻辑,避免资源泄漏

内容的提问来源于stack exchange,提问作者Armando Guillen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:36:03