N位随机字符串生成函数getRandomString的实现

  • 要实现的功能
    生成N位包含大小写字母和数字的随机字符串

  • 第一次实现

    • 思路

      1.定义char数组,然后使用Math.random()初始化。

      2.在for循环中遍历给char数组赋值。

    • 实现

      public class CharTest {
      	public static void main(String[] args) {
      		char []arr = new char[5];
      		for(int i=0;i<arr.length;i++){
      			int max=122,min=48;
      			 arr[i]=(char) (Math.random()*(max-min)+min); 	
      		}
      		for(char b :arr)
      		{
      			System.out.print(b);
      		}	
      	}	
      }
      
  • 问题

    题目要求生成的只包含大小写字母和随机数的字符串。但由于ASCII中有如下对应关系://48-57 0-9//65-90 A-Z//97-122 a-z。所以随机字符串存在非大小写字母和数字的情况。

  • 第二次实现

    • 实现思路

    1.建立字符串数组,然后使用for循环。

    2.在for循环中,使用while循换,条件为true。

    ​ 3.在while里面产生一个随机字符,如果字符是数字或者字母,将此字符赋给字符数组,并break出while。进行下一次for循环。

    ​ 4.如果没有产生数字或者字母,则结束本次产生的字符,重新while。

    ​ 5.直到产生指定长度的字符,退出for循环。

    ​ 6.然后将产生的字符数组传进String对象。

    ​ 7.返回string。

    break 和continue的方式解决只产生数字字母的难题。

public class CharTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		System.out.print(getRandomString(5));
	}
	
public static String getRandomString(int length) {
	char [] ch= new char[length];
	for(int i =0;i<length;i++) {
		while(true) {
		char c = (char)(Math.random()*'z');
		if(Character.isDigit(c) || (Character.isLetter(c))) {
			ch[i] = c;
			break;//跳出自己所在的那层循环
		}else {
			continue;//结束本次循环,会继续执行
		}
		}
	}
	String s = new String(ch);
	return s;
}
		
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值