快速业务通道

Merlin的魔力: 格式化数值和货币 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
NumberFormat 的另一个具体子类。它的定义和行为在 J2SE 1.4 中没有改变。 ChoiceFormat 并不会真正帮助您格式化数值,但它的确允许您自定义与某个值关联的文本。在最简单的情况下,我们可以设想一下显示出错消息的情况。如果存在导致失败的单个原因,您希望使用单词“is”。如果有两个或者多个原因,您希望使用单词“are”。如清单5所示, ChoiceFormat 允许您把一系列的值映射为不同的文本字符串。

ChoiceFormat 类通常与 MessageFormat 类一起使用,以产生与语言无关的拼接起来的消息。这里没有说明的是如何使用 ResourceBundle (它通常与 ChoiceFormat 一起使用)来获得那些字符串。关于如何使用资源包的信息 ,请参见 参考资料;特别地,“Java 国际化基础”教程提供了关于这方面的深入讨论 。

清单 5. 使用 ChoiceFormat

import java.text.*; import java.util.*; public class ChoiceSample {   public static void main(String args[]) {    double limits[] = {0, 1, 2};    String messages[] = {     "is no content",     "is one item",     "are many items"};    ChoiceFormat formats = new ChoiceFormat(limits, messages);    MessageFormat message = new MessageFormat("There {0}.");    message.setFormats(new Format[]{formats});    for (int i=0; i<5; i++) {     Object formatArgs[] = {new Integer(i)};     System.out.println(i + ": " + message.format(formatArgs));    }   } }

执行该程序将产生如清单6所示的输出:

清单 6. ChoiceFormat 输出

0: There is no content. 1: There is one item. 2: There are many items. 3: There are many items. 4: There are many items.

Merlin的魔力: 格式化数值和货币(4)

时间:2011-02-02 IBM John Zukowski

使用 Currency 进行货币计算

前面提到过的 getCurrency() 和 setCurrency() 方法返回新的 java.util.Currency 类的一个实例。这个类允许访问不同国家的 ISO 4217 货币代码。虽然自从 getCurrencyInstance() 引入以来您就能配合 NumberFormat 一起使用它,然而除了它们的数字显示外,您永远不能获得或显示某个地区的货币符号。有了 Currency 类,现在很容易就可以做到这一点。

正如前面提到过的 ,货币代码来自ISO 4217。通过传入某个国家的 Locale 或者货币的实际字母代码, Currency.getInstance() 将返回一个有效的 Currency 对象。 NumberFormat 的 getCurrency() 方法将在创建特定地区的货币实例之后做同样的事情。 清单7显示了如何获得货币实例,以及如何格式化将要显示为货币的数值。记住这些转换仅用于显示。如果需要在货币之间转换金额,应该在确定如何显示值之前进行转换。

清单 7. 使用 getCurrencyInstance() 和 Currency

import java.text.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class CurrencySample {
  public static void main(String args[]) {
     StringBuffer buffer = new StringBuffer(100);
    Currency dollars = Currency.getInstance("USD");
    Currency pounds = Currency.getInstance(Locale.UK);
    buffer.append("Dollars: ");
    buffer.append(dollars.getSymbol());
    buffer.append("\n");
    buffer.append("Pound Sterling: ");
    buffer.append(pounds.getSymbol());
    buffer.append("\n-----\n");
    double amount = 5000.25;
    NumberFormat usForma

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号