本帖最后由 talons 于 2016-8-18 10:01 编辑
题目:
1、实现Singleton
2、数字金额转汉字大写
当时一个没写,Singleton想了半天没明白啥意思。回来一查......单例设计模式,这...........就真的尴尬了。
Single Dog我知道是单身狗,居然就不知道Singleton是单例设计,也只能怪自己了。
单例设计模式的笔试题目可以说是非常常见的,只是万万没想到用英语的。
单例设计模式(Singleton pattern):保证一个类在内存中只有一个对象。
这里我就只简单介绍下饿汉单例设计模式及实现:
1. 私有化构造函数。
2. 声明本类的引用类型变量,并且使用该变量指向本类对象。
3. 提供一个公共静态的方法获取本类的对象。
代码实现:
[Java] 纯文本查看 复制代码 class Single{
//声明本类的引用类型变量,并且使用该变量指向本类对象
private static Single s = new Single();
//私有化构造函数
private Single(){}
//提供一个公共静态的方法获取本类的对象
public static Single getInstance(){
return s;
}
}
第二题代码就比较长了。主要涉及几种数据类型的装换和字符串的拼接。代码如下:
[Java] 纯文本查看 复制代码 private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分"; // 单位字符串
private static final String CASEVAL = "零壹贰叁肆伍陆柒捌玖"; // 数量字符串
private static final double MAX_VALUE = (Long.MAX_VALUE)/100; // 最大值限定
public static String MoneyCase(double v) {
//限定所取参数范围
if (v < 0 || v > MAX_VALUE) {
return "参数非法!";
}
//将原double数据乘100将小数部分转化为整数然后存入一个长整型便于转换。
long l = Math.round(v * 100);
if (l == 0) {
return "零元整";
}
//将数据拼接成字符串,便于转换操作
String value = l + "";
// 通过j变量通过索引来控制单位,除去无效高位,
int j = UNIT.length() - value.length();
//创建接收字符串
String rs = "";
//定义isZero变量用于判断当前位是否为0
boolean isZero = false;
//通过i变量检索value字符串进行每一位数值以及单位的构造
for (int i= 0; i < value.length(); i++, j++) {
//提取当前位置的数量
char val = value.charAt(i);
//提取当前单位
char unit = UNIT.charAt(j);
if (val == '0') {
isZero = true;
if (unit == '亿' || unit == '万' || unit == '元') {
rs = rs + unit;
isZero = false;
}
} else {
if (isZero) {
rs = rs + "零";
isZero = false;
}
rs = rs + CASEVAL.charAt(val - '0') + unit;
}
}
if (!rs.endsWith("分")) {
rs = rs + "整";
}
rs = rs.replaceAll("亿万", "亿");
return rs;
}
|