【发布时间】:2016-02-23 00:41:20
【问题描述】:
我正在创建三个类, 首先,ExchangeRate 类用于存储文本文件中的数据。
code public class ExchangeRate {
private String Local;
private String Foreign;
private double Rate;
public ExchangeRate(String Px, String Py, double ER) {
Local = Px;
Foreign = Py;
Rate = ER;
}
public void setLocal(String L) {
Local = L;
}
public void setForeign(String F) {
Foreign = F;
}
public void setRate(double R) {
Rate = R;
}
public String getLocal() {
return Local;
}
public String getForeign() {
return Foreign;
}
public double getRate() {
return Rate;
}
}
然后,我创建 CurrencyExchange 类来转换从构造函数获取的汇率。
enter code here public class CurrencyExchange {
public int ratesize = 0;
public ExchangeRate[] allrecord = new ExchangeRate[42];
private String name1;
private String name2;
private double num;
private double num2;
public void convert(String currencyCode1, String currencyCode2,
double amount, boolean printFlag) {
name1 = currencyCode1;
name2 = currencyCode2;
num = amount; //change getLocal() to static?
if (name1 == ExchangeRate.getLocal()
&& name2 == ExchangeRate.getForeign()) {
num2 = num * ExchangeRate.getRate();
}
if (printFlag == true) {
printInfo();
}
}
public void addExchangeRate(ExchangeRate exRate) {
allrecord[ratesize] = exRate;
setratesize();
}
public void setratesize() {
ratesize++;
}
public String getname1() {
return name1;
}
public String getname2() {
return name2;
}
public double getnum() {
return num;
}
public void printInfo() {
System.out.println("Direct Conversion: Converted " + name1 + " " + num
+ " to " + name2 + " "+num2);
}
}
但是我很难检查货币是否可以转换为发短信类上指示的国家名称,例如'eur'和'jpy。表示根据 text.file 上的汇率将 EUR 转换为 JPT。如果我改变那个检查部分 "If(name1==ExchangeRate.getLocal()" 为静态,Local 会成为文本中的最后一个数据,无法勾选。所以,我想知道如何解决这个问题?
测试类
enter code here import java.io.File;
导入 java.io.FileNotFoundException; 导入 java.util.Scanner;
公共类 MP2_Task1 { public static void main(String[] args) {
CurrencyExchange currencyExchange = new CurrencyExchange();
String fileName = "exchange_rate.txt";
Scanner in = null;
try { // start reading data file
in = new Scanner(new File(fileName));
while (in.hasNextLine()) {
String line = in.nextLine();
String token[] = line.split(",");
if (token.length == 3) {
// create ExchangeRate instance for storing the exchange
// rate record
ExchangeRate exRate = new ExchangeRate(token[0], token[1],
Double.parseDouble(token[2]));
// adding the new exchange rate record to the
// CurrencyExchange instance
currencyExchange.addExchangeRate(exRate);
}
}
} catch (FileNotFoundException e) {
System.out.println(fileName + " cannot be found!");
} finally {
if (in != null) {
in.close();
}
}
String hkd = "HKD";
String usd = "USD";
String jpy = "JPY";
String gbp = "GBP";
String cny = "CNY";
String eur = "EUR";
String chf = "CHF";
// Task 1 - Simple money conversions
double oriAmount1 = 1000;
currencyExchange.convert(hkd, gbp, oriAmount1, true);
double oriAmount2 = 55;
currencyExchange.convert(cny, usd, oriAmount2, true);
double oriAmount3 = 300;
currencyExchange.convert(eur, jpy, oriAmount3, true);
double oriAmount4 = 8000;
currencyExchange.convert(hkd, chf, oriAmount4, true);
System.out.println();
}
}
预期输出:
直接兑换:将 1000.0 港元兑换成 83.8 英镑
直接换算:将 55.0 人民币换算成 8.6735 美元
直接转换:将 300.0 欧元转换为 39739.23 日元
直接兑换:将 HKD 8000.0 转换为 CHF 1026.4
关于汇率的整个文本文件
港元,美元,1.290000e-01
港币、日元、1.569860e+01
港币、英镑、8.380000e-02
港币、人民币、8.178000e-01
港币,欧元,1.185000e-01
港币、瑞士法郎、1.283000e-01
美元、港币、7.750800e+00
美元、日元、1.216885e+02
美元、英镑、6.499000e-01
美元、人民币、6.342400e+00
美元、欧元、9.187000e-01
美元、瑞士法郎、9.951000e-01
日元,港币,6.370000e-02
日元,美元,8.200000e-03
日元、英镑、5.300000e-03
JPY,CNY,5.210000e-02
JPY,EUR,7.500000e-03
JPY,CHF,8.200000e-03
英镑、港币、1.192560e+01
英镑,美元,1.538600e+00
英镑、日元、1.872341e+02
英镑、人民币、9.758600e+00
英镑,欧元,1.413500e+00
英镑,瑞士法郎,1.531000e+00
人民币,港币,1.222100e+00
CNY,USD,1.577000e-01
人民币、日元、1.918650e+01
人民币,英镑,1.025000e-01
CNY,EUR,1.448000e-01
CNY,CHF,1.569000e-01
欧元、港币、8.437100e+00
欧元、美元、1.088600e+00
欧元、日元、1.324641e+02
欧元、英镑、7.075000e-01
欧元、人民币、6.904000e+00
欧元,瑞士法郎,1.083100e+00
瑞士法郎,港币,7.789700e+00
瑞士法郎,美元,1.005000e+00
瑞士法郎、日元、1.222988e+02
瑞士法郎,英镑,6.532000e-01
瑞士法郎,人民币,6.374200e+00
瑞士法郎,欧元,9.233000e-01
【问题讨论】:
标签: java