问答题答案 第一题答案、在英文字Internationalization中,第一个字母i和最后一个字母n之间有18个字母,因此Internationalization又简称作i18n。
第二题答案、Java库java.text.NumberFormat类提供了对数目字格式的支持,下面给出的就是解答的类图:

图8、对数目字格式支持的解答。
程序的源代码如下:
package com.javapatterns.multilingual.number;
import java.util.Locale;
import java.text.NumberFormat;
public class NumberFormatTester
{
static public void displayNumber(
Double amount, Locale currentLocale)
{
NumberFormat formatter;
String amountOut;
formatter =
NumberFormat.getNumberInstance(currentLocale);
amountOut = formatter.format(amount);
System.out.println(amountOut + " "
+ currentLocale.toString());
}
static public void main(String[] args)
{
displayNumber(new Double(1234567.89),
new Locale("en", "US"));
displayNumber(new Double(1234567.89),
new Locale("de", "DE"));
displayNumber(new Double(1234567.89),
new Locale("fr", "FR"));
}
}
|
代码清单9、Resource文件res_zh_CH.properties的内容。
在运行时,程序回
打印出下面的结果:
456,789% en_US
456.789% de_DE
456 789% fr_FR
代码清单10、Resource文件res_zh_CH.properties的内容。
第三题答案、Java库java.text.NumberFormat类提供了对货币数目格式的支持。下面给出的就是解答的类图:

图9、对货币数目格式支持的解答。
程序的源代码如下:
package com.javapatterns.multilingual.number;
import java.util.Locale;
import java.text.NumberFormat;
public class CurrencyFormatTester
{
static public void displayCurrency(Double amount,
Locale currentLocale)
{
NumberFormat formatter;
String amountOut;
formatter =
NumberFormat.getCurrencyInstance(currentLocale);
amountOut = formatter.format(amount);
System.out.println(amountOut + " "
+ currentLocale.toString());
}
static public void main(String[] args)
{
displayCurrency(new Double(1234567.89),
new Locale("en", "US"));
displayCurrency(new Double(1234567.89),
new Locale("de", "DE"));
displayCurrency(new Double(1234567.89),
new Locale("fr", "FR"));
}
}
|
代码清单11、Resource文件res_zh_CH.properties的内容。
在运行时,程序回打印出下面的结果:
$1,234,567.89 en_US
1.234.567,89 DM de_DE
1 234 567,89 F fr_FR
代码清单12、Resource文件res_zh_CH.properties的内容。
第四题答案、Java库java.text.NumberFormat类提供了对百分比格式的支持,下面给出的就是解答的类图:

图10、对百分比式支持的解答。
程序的源代码如下:
package com.javapatterns.multilingual.number;
import java.util.Locale;
import java.text.NumberFormat;
public class PercentFormatTester
{
static public void displayPercent(
Double amount, Locale currentLocale)
{
NumberFormat formatter;
String amountOut;
formatter =
NumberFormat.getPercentInstance(currentLocale);
amountOut = formatter.format(amount);
System.out.println(amountOut + " "
+ currentLocale.toString());
}
static public void main(String[] args)
{
displayPercent(new Double(4567.89),
new Locale("en", "US"));
displayPercent(new Double(4567.89),
new Locale("de", "DE"));
displayPercent(new Double(4567.89),
new Locale("fr", "FR"));
}
} |
代码清单13、Resource文件res_zh_CH.properties的内容。
在运行时,程序回打印出下面的结果:
1,234,567.89 en_US
1.234.567,89 de_DE
1 234 567,89 fr_FR
代码清单14、Resource文件res_zh_CH.properties的内容。
(本章问答题第二、三、四题的解答参考了[GREEN]的相关例子,在这里我作了一些改动。)