int start = 19968; int end = 40869; int distance = end - start; long random = Math.round(Math.random() * (distance + 1) + 19968); char c = (char) (Integer.valueOf(Long.toHexString(random), 16) .intValue()); System.out.println(c);
int start = 19968; int end = 40869; int distance = end - start; long random = Math.round(Math.random() * (distance + 1) + 19968); char c = (char) (Integer.valueOf(Long.toHexString(random), 16) .intValue()); System.out.println(c);13楼的产生的是繁体和简体一起的字,想问下简体字的范围是多少啊?
下面是小弟写的,不过是包含繁体汉字的!在网上找了好久也没见到简体汉字Unicode码范围import java.util.*; public class test { public static void main (String[] args) { Random rand = new Random(); final int start = 19968; // 4E00(十六进制)转换成 19968(十进制) final int end = 40869; // 9FA5(十六进制)转换成 40869(十进制)
//因nextInt()方法产生的随机数是从0到指定的参数之间(不包含),所以加了1 int temp = rand.nextInt(end+1);
在此多谢楼上各位,我在些也提供一个段代码(csdn朋友'火龙果'写的,并不是我):public class Han{ public static final int D=0x9fa5-0x4e00+1; public char getRandomHan(){ return (char)(0x4e00+Math.random()*D); } }
我的意思是在不用字库情况下。
已知汉字的Unicode的范围是[\u4e00-\u9fa5],如何利用这些东西,以java来实现来产生随机汉字。
\u9a91
第三位是0-9
第四位是0-9 a-f
第五位是0-9 a-f
第六位是0-9 a-f
自己随机产生后4为就能实现随机产生汉字。
System.out.println(new String(new byte[] {-42,-48}));
汉字的区位码是用两个字节拼装一个汉字,俗称94码,你研究一下汉字编码,然后用合法的数值取代上述两个字节的数字就行了,
至于随即产生,那你就想办法找在汉字编码范围内数字的问题了。
去查下unicore表吧
int start = 19968;
int end = 40869;
int distance = end - start;
long random = Math.round(Math.random() * (distance + 1) + 19968);
char c = (char) (Integer.valueOf(Long.toHexString(random), 16)
.intValue()); System.out.println(c);
int end = 40869;
int distance = end - start;
long random = Math.round(Math.random() * (distance + 1) + 19968);
char c = (char) (Integer.valueOf(Long.toHexString(random), 16)
.intValue()); System.out.println(c);13楼的产生的是繁体和简体一起的字,想问下简体字的范围是多少啊?
public class test
{
public static void main (String[] args) {
Random rand = new Random();
final int start = 19968; // 4E00(十六进制)转换成 19968(十进制)
final int end = 40869; // 9FA5(十六进制)转换成 40869(十进制)
//因nextInt()方法产生的随机数是从0到指定的参数之间(不包含),所以加了1
int temp = rand.nextInt(end+1);
//如果temp==0,那么会显示为汉字“一”,不会出现别的字符
if(temp < start) temp += start;
//输出随机生成的汉字,和Unicode码
System.out.println((char)temp + " " + Integer.toHexString(temp)); }
}
public static final int D=0x9fa5-0x4e00+1;
public char getRandomHan(){
return (char)(0x4e00+Math.random()*D);
}
}
好多好多的以unicode的实现都是简繁混在一起,也是确实很难将它们分开.
你说的这种方法确实可以考虑.