用Java生成随机字符串
很久没写博客了,今年一定要多写写,这是今年的第一篇。昨天看慕课网Java的视频,老师布置了一个随机生成字符串(可以包含大写字母、小写字母、数字)的作业,要求有4点:
1.创建完List<String> 之后,往其中添加十条随机字符串
2.每条字符串的长度为10以内的随机整数
3.每条字符串的每个字符为随机生成的字符,字符可以重复
4.每条随机字符串不可以重复
我觉得这个随机字符串经常出现,比如以前我们做一个APP,如果你忘记密码了就是要求用户点击“忘记密码”发送密码到你短信上,然后把一个包含数字字母的密码发给你。我一直想实现一下这个包含数字字母的密码是怎么实现的,然后参考了一下网上的答案。不知道大家有没有其他的答案吗,我的代码如下:
public class RandomTest {
/**
* 这个方法是生成一个指定长度的随机字符串,可以包含数字、字母
* @param length 表示指定每个字符串的长度
* @return 返回一个字符串
*/
public String RandomString(int length) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
int num = random.nextInt(62);
sb.append(str.charAt(num));
}
return sb.toString();
}
/**
* 对生成的N个字符串进行排序
*/
public void randomStringSort() {
List<String> stringList = new ArrayList<String>();
Random random = new Random();
String string;
//这里是要生成10个随机字符串
for (int i = 0; i < 10; i++) {
int k;
do {
// 这是生成每一个字符串的随机长度,长度最少为1。
k = random.nextInt(10);
} while (k<1);
do {
string = RandomString(k);
} while (stringList.contains(string));
stringList.add(string);
System.out.println("将要添加字符串:'" + string + "'");
}
System.out.println("--------------排序前-----------------");
for (String string1 : stringList) {
System.out.println(" " + string1);
}
Collections.sort(stringList);
System.out.println("---------------排序后----------------");
for (String string2 : stringList) {
System.out.println(" " + string2);
}
}
public static void main(String[] args) {
RandomTest test = new RandomTest();
test.randomStringSort();
}
浙公网安备 33010602011771号