java随机生成中文名字

汉字区位码:
区码范围:01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。
位码范围:区码为55时,位码范围为1-89;其他区码,位码范围为1-94。

随机生成中文名字

import java.io.UnsupportedEncodingException;

public class ChineseName {
    public static void main(String[] args) {
        ChineseName d = new ChineseName();
        System.out.println(d.getName());//输出随机的中文名字
    }

    //获得汉字名字
    public String getName(){
        String name = "";
        int chineseNameNum = (int)(Math.random()*3 + 2);
        for(int i=1; i<=chineseNameNum;i++){
            name += this.getChinese();
        }
        return name;
    }

    //获得单个汉字
    public String getChinese(){
        String chinese = "";
        int i = (int)(Math.random()*40 + 16);
        int j = (int)(Math.random()*94 + 1);
        if(i == 55){
            j = (int)(Math.random()*89 + 1);
        }
        byte[] bytes = {(byte) (i+160),(byte) (j+160)};
        try {
            chinese =  new String(bytes, "gb2312");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return chinese;
    }
}


将单个汉字转换为区位码:


import java.io.UnsupportedEncodingException;

public class ChineseToCode {
    public static void main(String[] args) {
        ChineseToCode ctc = new ChineseToCode();
        System.out.println(ctc.getCode("王"));
    }

    public String getCode(String chinese){
        byte[] bt = null;
        try {
            bt = chinese.getBytes("gb2312");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String code = "";
        for(int i = 0;i<bt.length;i++){
            String hex = Integer.toHexString(bt[i] & 0xFF);// 转换为16进制
            if (hex.length() == 1) {
                hex = '0' + hex;                           // 长度是1位的,在前面补0
            }
            hex = hex.toUpperCase();                       // 转换为大写
            int a = Integer.parseInt(hex,16);
            code += (a - 0x80 - 0x20) + "";                // 获得区位码
        }
        return code;
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java随机生成女性名字的方法可以通过以下的步骤实现。 首先,我们可以在一个字符串数组中包含一些常见的女性名字。例如可以包含的名字有:小芳、晓霞、丽娜、婷婷、丹丹等等。可以根据实际需要增减这个数组中的名字。 接下来,我们可以使用Java中的Random类来生成一个随机的索引值。Random类可以通过调用nextInt方法来生成一个指定范围内的随机整数。 然后,我们可以使用生成的随机索引值来从之前的字符串数组中获取一个随机的女性名字。 最后,将获取到的随机女性名字返回给调用者,这样就完成了Java随机生成女性名字的过程。 以下是一个示例代码: ```java import java.util.Random; public class RandomFemaleNameGenerator { public static void main(String[] args) { String[] femaleNames = {"小芳", "晓霞", "丽娜", "婷婷", "丹丹"}; String randomFemaleName = generateRandomFemaleName(femaleNames); System.out.println("随机生成的女性名字是:" + randomFemaleName); } public static String generateRandomFemaleName(String[] femaleNames) { Random random = new Random(); int randomIndex = random.nextInt(femaleNames.length); return femaleNames[randomIndex]; } } ``` 当我们执行这段代码时,它将随机选择一个女性名字并打印出来。你可以根据需要修改femaleNames数组中的名字或者在调用generateRandomFemaleName方法时传入不同的女性名字数组来生成不同的女性名字

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值