‘壹’ java实现输出指定长度的随机字符(大小写字母和数字)遇到问题
程序输出错误的原因(见图)
‘贰’ 如何用java随机生成一个字母
char c=(char)(int)(Math.random()*26+97);
System.out.println(c);
通过随机函数生成,字母对应的int整型数字,然后转换才char类型的字母。
或
tring chars = "abcdefghijklmnopqrstuvwxyz";
System.out.println(chars.charAt((int)(Math.random() * 26)));
根据chars 随机截取其中的一个字母。
定义随机字母之前调用
import java.util.Arrays;
产生随机数的代码为:
char cha[]={'A','B','C','D','E','F','族链G','H','I','J','K','兆仔孙L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char ch[]=new char[5];
for(int i=0;i<ch.length;i++)
{
int index;
index=(int)(Math.random()*(cha.length));
ch[i]=cha[index];
}
System.out.println(Arrays.toString(ch));
这个是产生5个随机字戚升母在A-Z的范围
‘叁’ java中的数字,字母,汉字如何随机生成
数字,字母比较简单。
//手写的,省略了一部分String szzm = "0123...789abc...xyzABC...XYZ"; StringBuilder bu = new StringBuilder();for(int i = 0;i<6;i++){ bu.append(szzm.charAt(new Random().nextInt(szzm.length())));}System.out.println(bu.toString());
汉字复杂一些。我的方法是数字区间,19968~40869 之间 int 转char 都会变成汉字。
不过这个范围有点大,2w多汉字,有繁体的,还有生僻字。 如果不怕麻烦,汉字也可和数字一样,弄个汉字表。
StringBuilder bu = new StringBuilder();int base = 19968;int qujian = 40869 - 19968;for(int i = 0;i<6;i++){ int rand = base + new Random().nextInt(qujian); bu.append((char)rand);}System.out.println(bu.toString());