0
点赞
收藏
分享

微信扫一扫

「Java案例」货币单位转换

引言

现在来实现一个非常实用的Java编程案例——货币单位转换器。

案例:人民币与美元互转

编写程序,实现人民币和美元之间的相互转换。

# 源文件保存为“CurrencyConverter.java”。
import java.util.Scanner;

public class CurrencyConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("请选择转换方向:");
        System.out.println("1. 人民币 → 美元");
        System.out.println("2. 美元 → 人民币");
        System.out.print("请输入选项:");
        int choice = scanner.nextInt();
        
        System.out.print("请输入金额:");
        double amount = scanner.nextDouble();
        
        // 假设汇率是1美元=6.8人民币
        final double EXCHANGE_RATE = 6.8;
        
        if (choice == 1) {
            double usd = amount / EXCHANGE_RATE;
            System.out.printf("%.2f 人民币 = %.2f 美元\n", amount, usd);
        } else if (choice == 2) {
            double rmb = amount * EXCHANGE_RATE;
            System.out.printf("%.2f 美元 = %.2f 人民币\n", amount, rmb);
        } else {
            System.out.println("无效选项!");
        }
        
        scanner.close();
    }
}

运行结果 依次输入110,会得到:

请选择转换方向:

  1. 人民币 → 美元
  2. 美元 → 人民币 请输入选项:1 请输入金额:10 10.00 人民币 = 1.47 美元

代码解析

  1. 使用Scanner类获取用户输入
  2. 定义常量EXCHANGE_RATE存储汇率
  3. 根据用户选择执行不同方向的转换
  4. 人民币转美元用除法,美元转人民币用乘法
  5. 使用printf格式化输出,保留两位小数
  6. 最后别忘了关闭Scanner对象

案例:多国货币转换器

编写程序,实现多种货币的转换。

# 源文件保存为“MultiCurrencyConverter.java”。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class MultiCurrencyConverter {
    private static Map<String, Double> exchangeRates = new HashMap<>();
    
    static {
        // 初始化汇率数据(以人民币为基准)
        exchangeRates.put("USD", 0.147);  // 1人民币=0.147美元
        exchangeRates.put("EUR", 0.134);  // 1人民币=0.134欧元
        exchangeRates.put("JPY", 19.8);   // 1人民币=19.8日元
        exchangeRates.put("GBP", 0.116);  // 1人民币=0.116英镑
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("支持转换的货币:");
        for (String currency : exchangeRates.keySet()) {
            System.out.println(currency);
        }
        
        System.out.print("请输入原始货币代码:");
        String fromCurrency = scanner.next().toUpperCase();
        
        System.out.print("请输入目标货币代码:");
        String toCurrency = scanner.next().toUpperCase();
        
        System.out.print("请输入金额:");
        double amount = scanner.nextDouble();
        
        if (!exchangeRates.containsKey(fromCurrency) || !exchangeRates.containsKey(toCurrency)) {
            System.out.println("不支持的货币类型!");
            return;
        }
        
        // 转换为人民币
        double cny = amount / exchangeRates.get(fromCurrency);
        // 从人民币转换为目标货币
        double result = cny * exchangeRates.get(toCurrency);
        
        System.out.printf("%.2f %s = %.2f %s\n", amount, fromCurrency, result, toCurrency);
        
        scanner.close();
    }
}

运行结果 依次输入EURUSD100,会得到:

支持转换的货币: JPY EUR GBP USD 请输入原始货币代码:EUR 请输入目标货币代码:USD 请输入金额:100 100.00 EUR = 109.70 USD

代码解析

  1. 使用HashMap存储汇率数据
  2. 静态初始化块初始化汇率数据
  3. 显示支持的货币类型
  4. 用户输入原始货币、目标货币和金额
  5. 先转换为人民币,再转换为目标货币

案例:古代货币换算

古代金银铜钱的换算,1两黄金=10两白银=10000文铜钱。编写程序,实现古代货币的换行。

# 源文件保存为“AncientCurrency.java”。
public class AncientCurrency {
    public static void main(String[] args) {
        double gold = 2.5;
        
        double silver = gold * 10;
        double copper = gold * 10000;
        
        System.out.printf("%.2f 两黄金 = %.2f 两白银 = %.2f 文铜钱\n", gold, silver, copper);
        
        // 反向计算验证
        double gold2 = copper / 10000;
        System.out.printf("反向验证:%.2f 文铜钱 = %.2f 两黄金\n", copper, gold2);
    }
}

运行结果

2.50 两黄金 = 25.00 两白银 = 25000.00 文铜钱 反向验证:25000.00 文铜钱 = 2.50 两黄金

代码解析

  • 黄金转白银乘以10,转铜钱乘以10000
  • 2.5两黄金=25两白银=25000文铜钱
  • 反向计算验证结果正确

案例:带手续费的货币转换

实际兑换时银行会收手续费。编写程序,实现带手续费的货币转换。

# 源文件保存为“CurrencyWithFee.java”。
import java.util.Scanner;

public class CurrencyWithFee {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入兑换金额:");
        double amount = scanner.nextDouble();
        
        System.out.print("请输入汇率:");
        double rate = scanner.nextDouble();
        
        System.out.print("请输入手续费率(%):");
        double feePercent = scanner.nextDouble();
        
        double fee = amount * feePercent / 100;
        double converted = (amount - fee) * rate;
        
        System.out.printf("实际兑换金额:%.2f\n", converted);
        System.out.printf("手续费:%.2f\n", fee);
        
        scanner.close();
    }
}

运行结果 依次输入10006.81,会得到:

请输入兑换金额:1000 请输入汇率:6.8 请输入手续费率(%):1 实际兑换金额:6732.00 手续费:10.00

代码解析

  • 手续费按兑换金额的百分比计算
  • 实际兑换金额要扣除手续费
  • 输出实际兑换金额和手续费

实践练习题

练习:货币兑换计算器 编写一个程序,实现带用户界面的简单计算器。

# 源文件保存为“CurrencyCalculator.java”。
import java.util.Scanner;

public class CurrencyCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("=== 货币兑换计算器 ===");
        System.out.println("1. 人民币 → 美元");
        System.out.println("2. 美元 → 人民币");
        System.out.println("3. 人民币 → 欧元");
        System.out.println("4. 欧元 → 人民币");
        System.out.print("请选择:");
        
        int choice = scanner.nextInt();
        System.out.print("请输入金额:");
        double amount = scanner.nextDouble();
        
        double result = 0;
        switch (choice) {
            case 1: result = amount / 6.8; break;
            case 2: result = amount * 6.8; break;
            case 3: result = amount / 7.5; break;
            case 4: result = amount * 7.5; break;
            default: System.out.println("无效选择!");
        }
        
        if (choice >= 1 && choice <= 4) {
            String[] units = {"美元", "人民币", "欧元", "人民币"};
            System.out.printf("兑换结果:%.2f %s\n", result, units[choice-1]);
        }
        
        scanner.close();
    }
}

运行结果 依次输入31000,会得到:

=== 货币兑换计算器 ===

  1. 人民币 → 美元
  2. 美元 → 人民币
  3. 人民币 → 欧元
  4. 欧元 → 人民币 请选择:3 请输入金额:1000 兑换结果:133.33 欧元

代码解析

  • 提供简单的菜单界面
  • 使用switch-case处理不同兑换方向
  • 根据用户选择执行不同计算
  • 输出格式化的兑换结果
举报

相关推荐

0 条评论