[java] 汇率换算器实现(1)(二)

2014-11-23 21:59:38 · 作者: · 浏览: 8
请进行选择 (1, 2, 3 or 4)
不同货币单位以及相应的汇率
需要进行转换的货币量
输出
转换后的结果
如: 150 USD = 937.50 CNY
3.5 对应的实现, MoneyDemo
见初步实现代码.
3.6 小结
目前已经完成的功能:
人为的输入汇率
根据输入的汇率进行转换
需要进一步增加的功能:
当输入错误时, 如何进行处理
当需要转换的货币单位, 没有在汇率表中时, 如何进行处理
如何克服每次手动增加汇率的麻烦之处
下面将根据上述的问题进行进一步的改进.
4 进一步的改进
4.1 输入格式统一以及错误处理
为了减少代码的重复量, 需要对汇率输入, 以及转换输入的格式进行统一, 如下:
汇率输入: 汇率 from币种 to币种, 如 6.25 USD CNY
转换输入: from币种货币量 from币种 to币种, 如 100 USD CNY
然后对输入的错误情况进行了处理:
格式错误
汇率转换过程中遇到没有相应的汇率信息的情况处理
此时的结果如下: #中间代码
复制代码
1 // MoneyDemo.java
2 package com.cnblogs.grassandmoon;
3
4 import java.io.*;
5
6 class Helper {
7 public static void printVersion() {
8 System.out.println("欢迎使用汇率转换器");
9 System.out.println("版本: 1.0");
10 System.out.println();
11 System.out.println("作者: 钟谢伟");
12 System.out.println("email: grass-of-sky@163.com");
13 System.out.println();
14 }
15
16 public static void printHelp() {
17 System.out.println("1. 输入不同货币以及对应的汇率信息,");
18 System.out.println(" 第一个为相应的汇率");
19 System.out.println(" 第二个为需要转换的货币单位");
20 System.out.println(" 第三个为转换到的目标货币单位");
21 System.out.println(" 不同项目之间用空格隔开");
22 System.out.println(" " + getRateUsage());
23 System.out.println(" 表示: 1 USD * 6.25 = 1 CNY");
24 System.out.println();
25 System.out.println("2. 输入待转换量, 用空格隔开");
26 System.out.println(" " + getExchangeUsage());
27 System.out.println();
28 System.out.println("3. 帮助");
29 System.out.println();
30 System.out.println("4. 退出");
31 System.out.println();
32 printUsage();
33 System.out.println();
34 }
35
36 public static void printUsage() {
37 System.out.println("请选择 (1, 2, 3 或者 4)");
38 }
39
40 public static String getRateUsage() {
41 return "如: 6.25 USD CNY";
42 }
43
44 public static String getExchangeUsage() {
45 return "如: 100 USD CNY";
46 }
47 }
48
49 class ReadLineTokens {
50 public double value;
51 public String from;
52 public String to;
53
54 ReadLineTokens(double v, String f, String t) {
55 value = v;
56 from = f;
57 to = t;
58 }
59 }
60
61 public class MoneyDemo {
62 // 对汇率输入, 以及转换输入进行处理, 提取不同的成份
63 static ReadLineTokens processReadLine(BufferedReader br)
64 throws IOException {
65 String inputLine = br.readLine();
66 String tokens[] = inputLine.split(" ");
67 if (tokens.length == 1 && tokens[0].equals("q")) {
68 return null;
69 }
70
71 return new ReadLineTokens(new Double(tokens[0]),
72 tokens[1],
73 tokens[2]);
74 }
75
76 public static void main(String[] args)
77 throws IOException {
78 String cmdLine = null;
79 String inputMsg = null;
80 Money m = new Money();
81 Money exchanged = new Money();
82 ReadLineTokens tokens;
83 boolean inputError = false;
84 BufferedReader br = new
85 BufferedReader(new InputStreamReader(System.in));
86 Helper.printVe