java登录字符串封装_JAVA的随机的字符串的封装(基本上够用了)

1 importjava.util.Random;2

3 public classUranDom {4 /**

5 * 以下均为random函数6 * **/

7 private staticRandom random;8 private static longseed;9 static{10 seed=System.currentTimeMillis();11 random=newRandom(seed);12 }13

14 privateUranDom(){}15

16 /**

17 * 获取种子值18 *@returnlong 随机种子生成器种子值19 *20 **/

21 public static longgetSeed(){22 returnseed;23 }24

25 /**

26 * 随机返回0到1之间的实数[0,1)27 *@returndouble 随机数28 *29 * **/

30 public static doubleuniform(){31 returnrandom.nextDouble();32 }33

34 /**

35 * 随机0到N-1的整数[0,N)36 *@paramN 上限37 * @retrun int 随机数38 * **/

39 public static int uniform(intN){40 returnrandom.nextInt(N);41 }42 /**

43 * 随机返回a到b-1之间的整数44 *@parama 下限45 *@paramb 上限46 *@returnint 随机数47 *48 * **/

49 public static int uniform(int a,intb){50 return a+uniform(b-1);51 }52

53 /**

54 * 随机返回a到b之间的实数55 *@parama 下限56 *@paramb 上限57 *@returnint 随机数58 *59 * **/

60

61 public static double uniform(double a,doubleb){62 return a+uniform()*(b-a);63 }64

65 /***66 *@paramtype ==1 数字67 *@paramtype ==2 纯小写字母68 *@paramtype ==3 纯大写字母69 *@paramtype ==4 数字和小写字母混排70 *@paramtype ==5 数字和大写字母混排71 *@paramtype ==6大写和小写字母混排72 *@paramtype ==7 大小写和数字混排73 *@paramlength 长度74 *@paramboth 只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型75 * **/

76 public static String RandString(int type,int length,booleanboth){77 StringBuffer buffer=newStringBuffer();78 StringBuffer sb=null;79 String number="0123456789";80 String sletter="abcdefghijklmnopqrstuvwxyz";81 String bletter="ABCDEFGHIJKLMNOPQRSTUVWXYZ";82

83 //处理type

84 switch(type){85 case 1://纯数字

86 buffer.append(number);87 sb=newStringBuffer();88 while(length>0){89 sb.append(buffer.charAt(UranDom.uniform(10)));90 length--;91 }92 break;93 case 2://纯小写

94 buffer.append(sletter);95 sb=newStringBuffer();96 while(length>0){97 sb.append(buffer.charAt(UranDom.uniform(26)));98 length--;99 }100 break;101 case 3://纯大写

102 buffer.append(bletter);103 sb=newStringBuffer();104 while(length>0){105 sb.append(buffer.charAt(UranDom.uniform(26)));106 length--;107 }108 break;109 case 4://数字+小写

110 buffer.append(number+sletter);111 if(!both){112 sb=newStringBuffer();113 while(length>0){114 sb.append(buffer.charAt(UranDom.uniform(36)));115 length--;116 }117 }else {//两者必有其一

118 sb=newStringBuffer();119 int ra1=UranDom.uniform(length);120 int ra2=UranDom.uniform(length);121 //如果重复则重新随机

122 while(ra2==ra1){123 ra2=UranDom.uniform(length);124 }125 //随机第一个和第二个的数值

126 char c1=(char)('0'+UranDom.uniform(10));127 char c2=(char)('a'+UranDom.uniform(26));128

129 while(length>0){130 if(length==ra1){131 sb.append(c1);132 }133 else if(length==ra2)134 {135 sb.append(c2);136 }137 else sb.append(buffer.charAt(UranDom.uniform(36)));138 length--;139 }140 }141 break;142 case 5://数字+大写

143 buffer.append(number+bletter);144 if(!both){145 sb=newStringBuffer();146 while(length>0){147 sb.append(buffer.charAt(UranDom.uniform(36)));148 length--;149 }150 }else {//两者必有其一

151 sb=newStringBuffer();152 int ra1=UranDom.uniform(length);153 int ra2=UranDom.uniform(length);154 //如果重复则重新随机

155 while(ra2==ra1){156 ra2=UranDom.uniform(length);157 }158 //随机第一个和第二个的数值

159 char c1=(char)('0'+UranDom.uniform(10));160 char c2=(char)('A'+UranDom.uniform(26));161

162 while(length>0){163 if(length==ra1){164 sb.append(c1);165 }166 else if(length==ra2)167 {168 sb.append(c2);169 }170 else sb.append(buffer.charAt(UranDom.uniform(36)));171 length--;172 }173

174 }175 break;176 case 6://大写+小写

177 buffer.append(sletter+bletter);178 if(!both){179 sb=newStringBuffer();180 while(length>0){181 sb.append(buffer.charAt(UranDom.uniform(52)));182 length--;183 }184 }else {//两者必有其一

185 sb=newStringBuffer();186 int ra1=UranDom.uniform(length);187 int ra2=UranDom.uniform(length);188 //如果重复则重新随机

189 while(ra2==ra1){190 ra2=UranDom.uniform(length);191 }192 //随机第一个和第二个的数值

193 char c1=(char)('a'+UranDom.uniform(26));194 char c2=(char)('A'+UranDom.uniform(26));195

196 while(length>0){197 if(length==ra1){198 sb.append(c1);199 }200 else if(length==ra2)201 {202 sb.append(c2);203 }204 else sb.append(buffer.charAt(UranDom.uniform(52)));205 length--;206 }207 }208 break;209 case 7:210 buffer.append(number+sletter+bletter);211 if(!both){212 sb=newStringBuffer();213 while(length>0){214 sb.append(buffer.charAt(UranDom.uniform(62)));215 length--;216 }217 }else {//三者必有其一

218 sb=newStringBuffer();219 int ra1=UranDom.uniform(length);220 int ra2=UranDom.uniform(length);221 int ra3=UranDom.uniform(length);222 //如果重复则重新随机

223 while(ra2==ra1){224 ra2=UranDom.uniform(length);225 }226 while(ra3==ra2||ra3==ra1){227 ra3=UranDom.uniform(length);228 }229 //随机第一个和第二个的数值

230 char c1=(char)('0'+UranDom.uniform(10));231 char c2=(char)('A'+UranDom.uniform(26));232 char c3=(char)('a'+UranDom.uniform(26));233 System.out.println(c1+c2+c3);234 while(length>0){235 if(length==ra1){236 sb.append(c1);237 }238 else if(length==ra2)239 {240 sb.append(c2);241 }242 else if(length==ra3){243 sb.append(c3);244 }245 else sb.append(buffer.charAt(UranDom.uniform(62)));246 length--;247 }248 break;249 }250

251 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值