java随机生成一个名字和对应拼音的方法

本文实例讲述了java随机生成一个名字和对应拼音的方法。分享给大家供大家参考。具体如下:

package com.cn.wangk.util.name;
import java.util.Random;
import com.cn.wangk.util.StrTools;
public class ChineseName {
  String[] sName = new String[95];
  String[] Name = new String[79];
  private String Names;
  private String Pid;
  public ChineseName() {
    sName[0]="白|bai";
    sName[1]="白|bai";
    sName[2]="蔡|cai";
    sName[3]="曹|cao";
    sName[4]="陈|chen";
    sName[5]="戴|dai";
    sName[6]="窦|dou";
    sName[7]="邓|deng";
    sName[8]="狄|di";
    sName[9]="杜|du";
    sName[10]="段|duan";
    sName[11]="范|fan";
    sName[12]="樊|fan";
    sName[13]="房|fang";
    sName[14]="风|feng";
    sName[15]="符|fu";
    sName[16]="福|fu";
    sName[17]="高|gao";
    sName[18]="古|gu";
    sName[19]="关|guan";
    sName[20]="郭|guo";
    sName[21]="毛|mao";
    sName[22]="韩|han";
    sName[23]="胡|hu";
    sName[24]="花|hua";
    sName[25]="洪|hong";
    sName[26]="侯|hou";
    sName[27]="黄|huang";
    sName[28]="贾|jia";
    sName[29]="蒋|jiang";
    sName[30]="金|jin";
    sName[31]="廖|liao";
    sName[32]="梁|liang";
    sName[33]="李|li";
    sName[34]="林|lin";
    sName[35]="刘|liu";
    sName[36]="龙|long";
    sName[37]="陆|lu";
    sName[38]="卢|lu";
    sName[39]="罗|luo";
    sName[40]="马|ma";
    sName[41]="牛|niu";
    sName[42]="庞|pang";
    sName[43]="裴|pei";
    sName[44]="彭|peng";
    sName[45]="戚|qi";
    sName[46]="齐|qi";
    sName[47]="钱|qian";
    sName[48]="乔|qiao";
    sName[49]="秦|qin";
    sName[50]="邱|qiu";
    sName[51]="裘|qiu";
    sName[52]="仇|qiu";
    sName[53]="沙|sha";
    sName[54]="商|shang";
    sName[55]="尚|shang";
    sName[56]="邵|shao";
    sName[57]="沈|shen";
    sName[58]="师|shi";
    sName[59]="施|shi";
    sName[60]="宋|song";
    sName[61]="孙|sun";
    sName[62]="童|tong";
    sName[63]="万|wan";
    sName[64]="王|wang";
    sName[65]="魏|wei";
    sName[66]="卫|wei";
    sName[67]="吴|wu";
    sName[68]="武|wu";
    sName[69]="萧|xiao";
    sName[70]="肖|xiao";
    sName[71]="项|xiang";
    sName[72]="许|xu";
    sName[73]="徐|xu";
    sName[74]="薛|xue";
    sName[75]="杨|yang";
    sName[76]="羊|yang";
    sName[77]="阳|yang";
    sName[78]="易|yi";
    sName[79]="尹|yin";
    sName[80]="俞|yu";
    sName[81]="赵|zhao";
    sName[82]="钟|zhong";
    sName[83]="周|zhou";
    sName[84]="郑|zheng";
    sName[85]="朱|zhu";
    sName[86]="东方|dongfang";
    sName[87]="独孤|dugu";
    sName[88]="慕容|murong";
    sName[89]="欧阳|ouyang";
    sName[90]="司马|sima";
    sName[91]="西门|ximen";
    sName[92]="尉迟|yuchi";
    sName[93]="长孙|zhangsun";
    sName[94]="诸葛|zhuge";
    Name[0]="ai|皑艾哀";
    Name[1]="an|安黯谙";
    Name[2]="ao|奥傲敖骜翱";
    Name[3]="ang|昂盎";
    Name[4]="ba|罢霸";
    Name[5]="bai|白佰";
    Name[6]="ban|斑般";
    Name[7]="bang|邦";
    Name[8]="bei|北倍贝备";
    Name[9]="biao|表标彪飚飙";
    Name[10]="bian|边卞弁忭";
    Name[11]="bu|步不";
    Name[12]="cao|曹草操漕";
    Name[13]="cang|苍仓";
    Name[14]="chang|常长昌敞玚";
    Name[15]="chi|迟持池赤尺驰炽";
    Name[16]="ci|此次词茨辞慈";
    Name[17]="du|独都";
    Name[18]="dong|东侗";
    Name[19]="dou|都";
    Name[20]="fa|发乏珐";
    Name[21]="fan|范凡反泛帆蕃";
    Name[22]="fang|方访邡昉";
    Name[23]="feng|风凤封丰奉枫峰锋";
    Name[24]="fu|夫符弗芙";
    Name[25]="gao|高皋郜镐";
    Name[26]="hong|洪红宏鸿虹泓弘";
    Name[27]="hu|虎忽湖护乎祜浒怙";
    Name[28]="hua|化花华骅桦";
    Name[29]="hao|号浩皓蒿浩昊灏淏";
    Name[30]="ji|积极济技击疾及基集记纪季继吉计冀祭际籍绩忌寂霁稷玑芨蓟戢佶奇诘笈畿犄";
    Name[31]="jian|渐剑见建间柬坚俭";
    Name[32]="kan|刊戡";
    Name[33]="ke|可克科刻珂恪溘牁";
    Name[34]="lang|朗浪廊琅阆莨";
    Name[35]="li|历离里理利立力丽礼黎栗荔沥栎璃";
    Name[36]="lin|临霖林琳";
    Name[37]="ma|马";
    Name[38]="mao|贸冒貌冒懋矛卯瑁";
    Name[39]="miao|淼渺邈";
    Name[40]="nan|楠南";
    Name[41]="pian|片翩";
    Name[42]="qian|潜谦倩茜乾虔千";
    Name[43]="qiang|强羌锖玱";
    Name[44]="qin|亲琴钦沁芩矜";
    Name[45]="qing|清庆卿晴";
    Name[46]="ran|冉然染燃";
    Name[47]="ren|仁刃壬仞";
    Name[48]="sha|沙煞";
    Name[49]="shang|上裳商";
    Name[50]="shen|深审神申慎参莘";
    Name[51]="shi|师史石时十世士诗始示适炻";
    Name[52]="shui|水";
    Name[53]="si|思斯丝司祀嗣巳";
    Name[54]="song|松颂诵";
    Name[55]="tang|堂唐棠瑭";
    Name[56]="tong|统通同童彤仝";
    Name[57]="tian|天田忝";
    Name[58]="wan|万宛晚";
    Name[59]="wei|卫微伟维威韦纬炜惟玮为";
    Name[60]="wu|吴物务武午五巫邬兀毋戊";
    Name[61]="xi|西席锡洗夕兮熹惜";
    Name[62]="xiao|潇萧笑晓肖霄骁校";
    Name[63]="xiong|熊雄";
    Name[64]="yang|羊洋阳漾央秧炀飏鸯";
    Name[65]="yi|易意依亦伊夷倚毅义宜仪艺译翼逸忆怡熠沂颐奕弈懿翊轶屹猗翌";
    Name[66]="yin|隐因引银音寅吟胤訚烟荫";
    Name[67]="ying|映英影颖瑛应莹郢鹰";
    Name[68]="you|幽悠右忧猷酉";
    Name[69]="yu|渔郁寓于余玉雨语预羽舆育宇禹域誉瑜屿御渝毓虞禺豫裕钰煜聿";
    Name[70]="zhi|制至值知质致智志直治执止置芝旨峙芷挚郅炙雉帜";
    Name[71]="zhong|中忠钟衷";
    Name[72]="zhou|周州舟胄繇昼";
    Name[73]="zhu|竹主驻足朱祝诸珠著竺";
    Name[74]="zhuo|卓灼灼拙琢濯斫擢焯酌";
    Name[75]="zi|子资兹紫姿孜梓秭";
    Name[76]="zong|宗枞";
    Name[77]="zu|足族祖卒";
    Name[78]="zuo|作左佐笮凿";
  }
  public void GetName(){
    Random random = new Random();
    int i = random.nextInt(94);
    String[] names = StrTools.split(sName[i],"|");
    String id = names[0];
    String pid = names[1];
    String[] mingzi1 = this.GetNameKey();
    id = id+mingzi1[1];
    pid = pid+mingzi1[0];
    if(random.nextInt(2)==1){
      mingzi1 = this.GetNameKey();
      id = id+mingzi1[1];
      pid = pid+mingzi1[0]+",";
    }
    this.Names=id;
    this.Pid=pid;
  }
  private String[] GetNameKey(){
    Random random = new Random();
    int i = random.nextInt(78);
    String[] names = StrTools.split(Name[i],"|");
    String[] mingzi = new String[2];
    mingzi[0] = names[0];
    mingzi[1] = this.Getkey(names[1]);
    return mingzi;
  }
  private String Getkey(String Name){
    if(StrTools.CheckStrNull(Name)) return null;
    int counti = Name.length();
    Random random = new Random();
    int i = random.nextInt(counti);
    return Name.substring(i,i+1);
  }
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO 自动生成方法存根
    //ChineseName chineseName = new ChineseName();
    int j=0;
    for(int i=0;i<10000;i++){
      if(j==50){
        j=0;
        System.out.println();
      }
      j++;
      //System.out.print(chineseName.GetName()+",");
    }
  }
  public String getNames() {
    return Names;
  }
  public void setNames(String names) {
    Names = names;
  }
  public String getPid() {
    return Pid;
  }
  public void setPid(String pid) {
    Pid = pid;
  }
}
<%@ page contentType="image/jpeg;charset=UTF-8"%>
<%@ page import="java.awt.*"%>
<%@ page import="java.awt.image.*"%>
<%@ page import="java.util.*"%>
<%@ page import="javax.imageio.*"%>
<%@page import="com.cn.wangk.util.name.ChineseName"%>
<%! Color getRandColor(int fc,int bc){//给定范围获得随机颜色
    Random random = new Random();
    if(fc>255) fc=255;
    if(bc>255) bc=255;
    int r=fc+random.nextInt(bc-fc);
    int g=fc+random.nextInt(bc-fc);
    int b=fc+random.nextInt(bc-fc);
    return new Color(r,g,b);
  }
%>
<%
  out.clear();
  out=pageContext.pushBody();//即可(其中out,pageContext均为jsp内置对象!)
  //设置页面不缓存
  response.setHeader("Pragma","No-cache");
  response.setHeader("Cache-Control","no-cache");
  response.setDateHeader("Expires", 0);
  // 在内存中创建图象
  int width=100, height=35;
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  // 获取图形上下文
  Graphics g = image.getGraphics();
  //生成随机类
  Random random = new Random();
  // 设定背景色
  g.setColor(getRandColor(200,250));
  g.fillRect(0, 0, width, height);
  //设定字体
  g.setFont(new Font("黑体",Font.PLAIN,18));
  // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
  g.setColor(getRandColor(160,200));
  for (int i=0;i<155;i++)
  {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
    int xl = random.nextInt(12);
    int yl = random.nextInt(12);
    g.drawLine(x,y,x+xl,y+yl);
  }
  ChineseName chineseName = new ChineseName();
  chineseName.GetName();
  String sRand = chineseName.getNames();
  String pid = chineseName.getPid();
  //g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
  g.setColor(Color.BLACK);
  g.drawString(sRand,5,18);
  g.setFont(new Font("黑体",Font.PLAIN,12));
  g.drawString(pid,5,30);
  //画边框
  g.setColor(Color.black);
  g.drawRect(0,0,width-1,height-1);
  // 将认证码存入SESSION 防止被窃取,可以使用密钥加密
  session.removeAttribute("gsrand");
  session.setAttribute("gsrand",sRand);
  // 图象生效
  g.dispose();
  // 输出图象到页面
  ImageIO.write(image, "JPEG", response.getOutputStream());%>

希望本文所述对大家的java程序设计有所帮助。

(0)

相关推荐

  • Java中汉字转拼音pinyin4j用法实例分析

    本文实例讲述了Java中汉字转拼音pinyin4j用法.分享给大家供大家参考,具体如下: 汉字转换拼音在日常开发中是个很常见的问题.例如我们伟大的12306,在地名中输入"WH",就会出现"武汉""芜湖""威海"等地名,输入"WUHU"就会出现"芜湖". Java获取汉字的拼音,pinyin4j这个库可以很好的解决这个问题. 下载地址:http://sourceforge.net/pro

  • Java实现将汉字转化为汉语拼音的方法

    本文实例讲述了Java实现将汉字转化为汉语拼音的方法.分享给大家供大家参考,具体如下: 网上乱转,偶然看到一个很有意思的小工具,名字叫pinyin4j,可以把汉字转换为汉语拼音,利用他的话再配合上lucene.中文分词就可以做出类似google那种输入汉语拼音进行全文检索的功能了.实现的代码如下 package pinyin4j; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.forma

  • Java实现的汉语拼音工具类完整实例

    本文实例讲述了Java实现的汉语拼音工具类.分享给大家供大家参考,具体如下: package test; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.piny

  • Java获取汉字对应的拼音(全拼或首字母)

    Java 根据汉语字符串获得对应的拼音字符串或者拼音首字母字符串等操作,需要添加jar包: 引入pinyin4j-2.5.0.jar包 代码实现: import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; im

  • Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuP

  • java中实现汉字按照拼音排序(示例代码)

    最近項目中需要對繁體字按拼音進行排序 复制代码 代码如下: public static void main(String[] args) { Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = { "张三", "李四", "王五", "刘六" ,"周濤","戴笠","戴阿&q

  • Java 实现汉字转换为拼音的实例

    Java 实现汉字转换为拼音 转换类 public class PINYINChinese { private static int[] pyvalue = new int[] { -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, -20230, -20051, -20036, -20032, -20026, -20002, -19990, -19986, -19982, -19976, -19805,

  • java实现将汉语转换为拼音功能

    这几天在做项目的时候用到了通过拼音去数据库表里面去模糊查询汉语字段,刚开始的时候感觉特别神奇,查了好多资料,直接去模糊查询是能实现的,但是貌似很复杂.所以最终取了一个比较容易的方案,就是给数据库表里面新加了一个拼音字段.完美的解决了这个问题,虽说可以这么干,但是数据这么多,全部转换为拼音(人一个一个区输入,有点不现实).于是就在网上找呀找,就找到了一段直接将汉语转换为拼音的一段代码,在这和大家分享一下. 所需jar:pinyin4j-2.5.0.jar public static void ma

  • Java获取中文拼音、中文首字母缩写和中文首字母的示例

    我们有时候会遇到这样的情况,需要获取某些中文的拼音.中文首字母缩写和中文首字母,下面我将为大家介绍一下如何获取中文拼音的缩写. 1.项目建立和配置 首先,我们建立一个Java项目,新建libs文件夹并引入一个734a7099-4830-39f2-a136-0e850ccdcc7a.jar文件,这个步骤相信就不用详细写了,跳过. 2.获取中文拼音(如:广东省 -->guangdongsheng) </pre><pre name="code" class="

  • java中将汉字转换成拼音的实现代码

    一:演示:       如在控制台输入:北京欢迎你 打印出来的拼音:bei jing huan ying ni 二:导入要依赖的jar: 汉字转换拼音jar下载 三:代码编写 复制代码 代码如下: public static String getPinYin(String src) {         char[] t1 = null;         t1 = src.toCharArray();          // System.out.println(t1.length);      

  • java获取中文拼音首字母的实例

    如下所示: import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinHelperUtil { /** * 得到中文首字母(中国 -> ZG) * @param str 需要转化的中文字符串 * @return 大写首字母缩写的字符串 */ public static String getPinYinHeadChar(String str) { StringBuilder convert = new StringBuilde

随机推荐