用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();
	
    }

  

posted on 2015-04-12 14:28  催夜凉风  阅读(881)  评论(0)    收藏  举报

导航