练习-随机字符串

创建一个长度是5的随机字符串,随机字符有可能是数字,大写字母或者小写字母

给点提示: 数字和字符之间可以通过互相转换

char c = ‘A’;
short s = (short) c;

通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了

需要用到ASCII码对照表

答案:

package character;
  
public class TestString {
  
    public static void main(String[] args) {
   //方法1:-缩小范围判断赋值法
		char cs[]=new char[5];
		short start = '0';//Ac码表字符0起始值(自动转换成对应int值)
		short end='z'+1;//Ac码表字符z结束值
		for(int i =0;i<cs.length;i++){//遍历数组长度
			 while (true) {
				 /*
				  * 注意:这里必须要加上while无限循环,因为
				  * 因为你不加while  有可能获取到的是一个特殊符号 比如 *  _等等的,
				  * 但是需要的是字符或者是数字,不是这两个就循环生成,如果是就跳出循环,
				  * 你外循环是5次 对不对,如果你不写循环,那如果5次都是特殊字符,
				  * 最终循环完毕 是不是你的数组还是空  根本就没有赋值,分清楚,while(){}是循环语句,
				  * 而if(){}是判断语句,break在当前循环中跳出重新开始执行for语句
				  * 
				  */
			
			/*  缩小随机范围:
            起始值加上0-1随机数*剩下的取值范围=起始值开始到取值末端的一个随机数。
            因为随机数取整后,小数点后部分会丢失,
            最小随机永远是0,最大随机永远取不到设定的范围末端,左闭右开
            所以要想取到随机数包含最后一位,必须+1    */
			char c= (char)((Math.random()*(end-start))+start);
			
			//判断随机字符中   字母或者数字可以进入
			if(Character.isDigit(c)||Character.isLetter(c)){
				cs[i]=c;//把符合条件的随机字符放入每一个元素
				break;//每赋值一个元素,就跳出这个内层循环,进入外层循环
				}
			 }
		}
		System.out.println(cs);
		
          
      //方法二:确定字符随机赋值法
		String pool="";
		 //设计一个空字符串用来拼接
		//把所有符合要求的字符全部拼接在一起
		for(int i ='0';i<='9';i++){
			pool+=(char)i;
		}
		for(int i ='a';i<='z';i++){
			pool+=(char)i;
		}
		for(int i ='A';i<='Z';i++){
			pool+=(char)i;
		}
		 //创建长度为5的字符数组
		char[]cs=new char[5];
		for(int i =0;i<cs.length;i++){
			 //把字符串的长度用随机数表现出来,作为下标(索引)
			int index = (int)(Math.random()*(pool.length()));
			//把字符串随机下标的一个字符放入每一个数组元素
			cs[i]=pool.charAt(index);
		}
		 String str = String.valueOf(cs);    //把字符数组转换成字符串
		System.out.println(cs);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值