java随机生成人名

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35028612/article/details/79933192

#java随机生成人名

/**
 * author:creator
 * date:2018/4/10
 */

package 随机生成人名;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class RandomName {
	public static void main(String[] args) throws IOException{
		for(int i = 50; i-->0;){
			String name = firstName() + secondName(true);
			System.out.println(name);
		}
	}
	/*
	 * 随机返回a和b其中一个数
	 */
	public static int randomAB(int a, int b){
		return (int)((Math.random()*Math.abs(a-b))+ Math.min(a, b));
	}
	
	/**
	 * 生成姓氏
	 * @throws IOException 
	 */
	private static String firstName() throws IOException{
		List<String> fistNames = loadBaiJiaXing("/asserts/百家姓");
		return fistNames.get(randomAB(0,fistNames.size()));
	}
	
	/**
	 * 读取姓氏文件,获取姓氏
	 * @return
	 * @throws IOException 
	 */
	private static List<String> loadBaiJiaXing(String path) throws IOException{
		//使用类加载器来加载文件
		InputStream in = RandomName.class.getResourceAsStream(path);
		BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8"));
		//文件读取
		String line = null;
		//结果集合
		List<String> result = new ArrayList<>(200);
		while((line=br.readLine())!=null){
			line = line.trim();
			//使用空白字符分割
			String[] names = line.split("\\s+");
			result.addAll(Arrays.asList(names));
		}
		return result;
	}
	
	/**
	 * @生成名字
	 * @return
	 * @throws IOException 
	 */
	private static String secondName(boolean male) throws IOException{
		if(male){
			List<String> names = loadNames("/asserts/男性");
			return names.get(randomAB(0,names.size()));
		}else{
			List<String> names = loadNames("/asserts/女性");
			return names.get(randomAB(0,names.size()));
		}
	}
	/**
	 * 读取百家姓文件,获取名字
	 * @return
	 * @throws IOException 
	 */
	private static List<String> loadNames(String path) throws IOException{
		InputStream in = RandomName.class.getResourceAsStream(path);
		BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8"));
		//文件读取
		String line = null;
		//结果集合
		List<String> result = new ArrayList<>(200);
		while((line=br.readLine())!=null){
			line = line.trim();
			//使用空白字符分割
			String[] names = line.split("\\s+");
			result.addAll(Arrays.asList(names));
		}
		return result;
	}

}

运行效果:

淳于枫国
阴晨信
亓官濡贤
弓年枫
堵哲暄
顾寅涛
陆天禧
夏侯辰禧
卓礼谛
甄骞嘉
甘锐起
宓运良
路逸栋
景辰然
危俊休
文谷骞
籍帝强
游博烁
姚轩运
吕良栋
祖俊翰
周晨柏
戚颜良
经晨辰
闵骏骏
盛运日
羿栋睿
邢邦嘉
宣轩运
褚皓骏
乌柔凯
连泽辰
百里恒晨
游天骞
伯恒晨
宦康星
长孙骏暄
湛郁邦
鄂翰柔
赏驰楷
楚成凯
江腾驰
习轩骏
轩辕梁邦
谯天禧
乜星宇
那邦嘉
东郭奇骞
纪震逸
谭海礼

用到的资源文件:

链接: https://pan.baidu.com/s/1lgMLPu2V81L9U2mTufyMnw 提取码: xkqp

猜你喜欢

转载自blog.csdn.net/qq_35028612/article/details/79933192
今日推荐