package com.yong.course.chinese;
import java.io.UnsupportedEncodingException;
import java.util.Random;
import java.util.Scanner;
/**
* @Author: yong
* @Date: 2022-09-17 14:02
* @Explain:
*/
public class ChineseRandomGeneration {
/**
* 方法一: 随机生成汉字: 根据Unicode生成
*
* @param len
*/
public static void unicodeMethod(int len) {
/*方法一: 随机生成汉字: 根据Unicode生成*/
StringBuffer sbu = new StringBuffer();
for (int i = 0; i < len; i++) {
char result = (char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1)));
sbu.append(result);
}
System.out.println("result : " + sbu.toString());
}
/**
* 方法二: 随机生成汉字: 根据GBK编码生成
*
* @param len
*/
public static void GBKMethod(int len) {
/*方法二: 随机生成汉字: 根据GBK编码生成*/
StringBuffer sbu = new StringBuffer();
String str = "";
int highPos;
int lowPos;
Random random = new Random();
for (int i = 0; i < len; i++) {
highPos = (176 + Math.abs(random.nextInt(39)));
lowPos = (161 + Math.abs(random.nextInt(93)));
byte[] b = new byte[2];
b[0] = (Integer.valueOf(highPos)).byteValue();
b[1] = (Integer.valueOf(lowPos)).byteValue();
try {
str = new String(b, "GBK");
sbu.append(str + " ");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
// char result = str.charAt(0);
// System.out.println("result : " + result);
System.out.println("result: " + sbu.toString());
}
//自动生成名字(中文)
public static void getRandomJianHan(int len) {
String ret = "";
for (int i = 0; i < len; i++) {
String str = null;
int hightPos, lowPos; // 定义高低位
Random random = new Random();
hightPos = (176 + Math.abs(random.nextInt(39))); // 获取高位值
lowPos = (161 + Math.abs(random.nextInt(93))); // 获取低位值
byte[] b = new byte[2];
b[0] = (new Integer(hightPos).byteValue());
b[1] = (new Integer(lowPos).byteValue());
try {
str = new String(b, "GBK"); // 转成中文
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
ret += str;
}
System.out.println("result: " + ret);
}
//生成随机用户名,数字和字母组成,
public static void getStringRandom(int len) {
String val = "";
Random random = new Random();
//参数length,表示生成几位随机数
for(int i = 0; i < len; i++) {
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
//输出字母还是数字
if( "char".equalsIgnoreCase(charOrNum) ) {
//输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char)(random.nextInt(26) + temp);
} else if( "num".equalsIgnoreCase(charOrNum) ) {
val += String.valueOf(random.nextInt(10));
}
}
System.out.println("result: " + val);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 几位汉字
System.out.println("1: unicode编码汉字: ; 2: GBK编码汉字: ");
int num = scanner.nextInt();
if (num == 1) {
System.out.println("请输入需要几位汉字");
int len = scanner.nextInt();
unicodeMethod(len);
} else if (num == 2){
System.out.println("请输入需要几位汉字");
int len = scanner.nextInt();
GBKMethod(len);
}else if (num == 3){
System.out.println("请输入需要几位汉字");
int len = scanner.nextInt();
getRandomJianHan(len);
} else {
System.out.println("请输入需要几位汉字");
int len = scanner.nextInt();
getStringRandom(len);
}
}
}
随机生成中文的java代码
于 2022-09-17 14:36:40 首次发布