5

是否有一些货币转换器库可以将值从特定货币转换为另一种货币?或者我应该为此实现我的how类?

如果有人有某种例子,那就太好了......

4

3 回答 3

10

理想情况下,由于货币的动态特性,您不应编写自己的公式来转换货币。访问一些公共 API 将是一个好主意,这些 API 可以可靠地用于进行货币转换。此类 API 之一是Yahoo货币转换器 API。雅虎 API 非常简单。获取两种货币之间当前汇率的基本一般请求如下所示:

http://download.finance.yahoo.com/d/quotes.csv?s=[From Currency][To Currency]=X&f=l1&e=.cs

例如,为了获得美元和以色列谢克尔之间的当前货币汇率,应构造以下请求:

http://download.finance.yahoo.com/d/quotes.csv?s=USDILS=X&f=l1&e=.cs

获取货币汇率信息非常简单。它从定义通用转换器行为的基本接口开始:

public interface CurrencyConverter {
    public float convert(String currencyFrom, String currencyTo) throws Exception;
}

以及带有显示其用法的基本主应用程序的实现类:

import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

import java.io.IOException;

public class YahooCurrencyConverter implements CurrencyConverter
{
    public float getConversionRate(String from, String to) throws IOException
    {
        HttpClientBuilder builder = HttpClientBuilder.create();
        try (CloseableHttpClient httpclient = builder.build())
        {
            HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + from + to + "=X&f=l1&e=.csv");
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            String responseBody = httpclient.execute(httpGet, responseHandler);

            return Float.parseFloat(responseBody);
        }
    }

    public static void main(String[] arguments) throws IOException
    {
        YahooCurrencyConverter yahooCurrencyConverter = new YahooCurrencyConverter();
        float current = yahooCurrencyConverter.getConversionRate("USD", "ILS");
        System.out.println(current);
    }
}

重要提示:除非您不付款,否则 Yahoo 或任何其他提供商没有义务提供此类 API。因此,您可能需要寻找一些付费 API,以防您根据它们构建商业应用程序。或者您需要保持警惕,以确保免费 API 已为您正常启动和运行

于 2013-06-08T11:27:10.620 回答
3

你可以看看货币转换器库。

Currency Converter 是一个提供货币转换 API 的 Java 库。它使用不同的银行网络服务来获取利率,并为任何支持的网络服务提供单一的编程接口。

目前支持以下 Web 服务:

  • 银行-ua.com
  • GoogleFinance 网络服务目前正在开发中

采取的例子:

// create an instance where USD is a default currency to convert from, and EUR a default one to convert to
// Using one of the implementation: BankUaCom
CurrencyConverter currencyConverter = new BankUaCom(Currency.USD, Currency.EUR);

// convert USD to EUR (the first parameter is amount of money you'd like to convert)
currencyConverter.convertCurrency(1f);

// the same
currencyConverter.convertCurrency(1f, Currency.EUR);

// the same
currencyConverter.convertCurrency(1f, Currency.USD, Currency.EUR);

// convert EUR to USD
currencyConverter.convertCurrency(1f, Currency.EUR, Currency.USD);

// and you can continue with any other supported currencies...
于 2013-06-08T11:29:07.030 回答
1

您想在线转换或之前输入特定值?也许这会有所帮助: http: //www.panticz.de/Simple-Java-currency-converter

于 2013-06-08T11:33:15.577 回答