/*Java中随机数的生成:
java.util.Random r = new java.util.Random();
int a = r.nextInt(100): a 0-99的随机数
*/
public class RandomString {
public static final String allChar = "0123456789abcd" +
"efghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入随机产生字符串的长度:");
int len = sc.nextInt();
System.out.println( method3(len));
}
//方法一
public static void method1(int length){
//长度转换为字符数组的长度
char[] cs = new char[length];
//Random对象
Random random = new Random();
/*
* ASCII表中每个字母和数字都有对应的编号
* 65~90 A~Z
* 97~122 a~Z
* 48~57 0~9
* */
for (int i = 0; i < length; i++) {
int a = random.nextInt(62);
if (a >= 0 && a <= 25) {
//90-25=65
a += 65;
}else if (a>25 && a<=51) {
// 97 - 26 = 71
a+=71;
}else{
// 52-48 = 4
a-=4;
}
cs[i] = (char) a;
}
System.out.println(cs);
}
//方法二
public static String method2(int length) {
char[] ss = new char[length];
int i = 0;
while (i < length) {
int f = (int) (Math.random() * 3); //生成0 1 2 随机数
if (f == 0) {
ss[i] = (char) ('A' + Math.random() * 26);
}else if (f == 1) {
ss[i] = (char) ('a' + Math.random() * 26);
}else if(f == 2){
ss[i] = (char) ('0' + Math.random() * 10);
}
i++;
}
String is = new String(ss);
return is;
}
// 方法三 StringBuffer的append()方法
public static String method3(int length) {
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(allChar.charAt(random.nextInt(allChar.length())));
}
return sb.toString();
}
}