代码实现如下
import java.util.Random;
public class NameGenerator {
// 声明一个随机数产生器
private final Random random = new Random();
// 声明一个数组用来存放 姓
private final String[] first = { "张" , "王" , "李" , "赵" , "陈" , "刘" , "郭" , "秦" , "马" , "孙" , "宋" , "安" , "周" };
// 声明一个数组用来存放 姓名 中的第二个字
private final String[] second = { "怡" , "晓" , "天" , "汉" , "杰" , "相" , "东" , "红" , "雨" , "贤" , "娴" , "泽" , "鹏" };
// 声明一个数组用来存放姓名 中的第三个字
private final String[] third = { "磊" , "娴" , "文" , "斌" , "彬" , "雨" , "刚" , "林" , "乐" , "明" , "平" , "东" , "宝" };
// 声明一个字符缓冲区用来缓存产生的单个姓名
private final StringBuffer buffer = new StringBuffer();
// 声明并创建本类的一个实例
private static final NameGenerator NAME_GENERATOR = new NameGenerator();
// 将构造私有
private NameGenerator() {
}
/**
* 用来随机产生单个姓名的静态方法
* @return 返回随机产生的单个姓名
*/
public static String generate() {
// 为了能够简洁地使用 NAME_GENERATOR 中的实例变量
// 这里选择重新声明变量并接受 NAME_GENERATOR 实例中的实例变量
Random random = NAME_GENERATOR.random ;
StringBuffer buffer = NAME_GENERATOR.buffer ;
String[] first = NAME_GENERATOR.first ;
String[] second = NAME_GENERATOR.second ;
String[] third = NAME_GENERATOR.third ;
buffer.setLength(0);
int a = random.nextInt( first.length );
buffer.append( first[ a ] ) ; // 从第一个数组中随机选择一个 姓
int b = random.nextInt( second.length ) ;
buffer.append( second[ b ] ) ; // 从第二个数组中随机选择第二个字
boolean x = random.nextBoolean() ; // true 表示产生三个字的姓名
if( x ) { // 如果 x 为 true 就随机选择第三个字,产生三个字的姓名
int c = random.nextInt( third.length );
buffer.append( third[ c ] ) ;
}
String name = buffer.toString(); // 从 buffer 中获得产生的姓名
return name ;
}
}