作者:赵成龙 发布时间:2019-03-02 19:54:44 所属类别:学习笔记 浏览量:466
该道笔试题题目是这样滴:
实现一个方法,能够生成一个随机字符串数组,这些字符串必须是不一样的,每个字符串由字母和数字组成。方法输入参数有两个
Count:字符串数目,Str_Length:字符串长度
可以考虑下面的模块来帮助实现(string.ascii,string.digits and random.choice())
接下来直接上代码
/**
*
* @param nums 数组中字符串个数
* @param num 每个字符串含有的字符数量
* @return 返回生成的字符串数组
*/
public static String[] generateRandom(int nums,int num){
char ch[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f',
'g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w',
'x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N',
'O','P','Q','R','S','T','U','V','W','X','Y','Z'};
String ss[]=new String[nums];//含有nums个字符串的字符串数组
String s="";
for(int i=0;i<nums;i++){//外层循环执行一次,生成一个字符串
for(int j=0;j<num;j++){//num表示字符串中字符数量
s=s+ch[new Random().nextInt(ch.length)];
}
if(!contains(ss, s)){//如果数组中不含新生成的字符串,则添加
ss[i]=s;
}else{//反之,i--,重新生成ss[i]
System.err.println("数组中已存在该字符串,将重新生成"+s);
i--;
}
// System.err.println(s);
s="";
}
return ss;
}
注意以上方法中调用了contains(ss, s)方法,该方法用来判断ss数组中是否包含s字符串。如果包含的话,自然是要重新生成滴!
/**
* 判断字符串数组中是否已含某一字符串
* @param ss 字符串数组
* @param s 字符串
* @return 含有返回true,不含返回false
*/
public static boolean contains(String[] ss,String s){
for(String m:ss){//遍历数组中元素,如果有与s一样的字符串,返回true
if(s.equals(m)){
return true;
}
}
return false;
}
下面在main方法中调用上面第一个方法,并为其赋参数,指定生成一个包含10个字符串的数组,每个字符串长度为6
public static void main(String[] args) {
// TODO Auto-generated method stub
String ss[]=generateRandom(10, 6);
System.out.println(Arrays.toString(ss));
for(String s:ss){
System.out.println(s);
}
}
观察输出
[t0h54z, enbDUT, pLcaZg, 5lRWIG, Mebgnm, sHAcDi, ZYKkrO, InbDZl, Cws2im, GatY5m]
t0h54z
enbDUT
pLcaZg
5lRWIG
Mebgnm
sHAcDi
ZYKkrO
InbDZl
Cws2im
GatY5m
OK!
本文出自LongBro博客,如需转载请注明出处。
本文链接:http://www.longqcloud.cn/blogs/73.html
上一篇:java笔试题详解之冒泡排序
下一篇:记录最近在学习项目时新学到的MySQL知识
学习
2019-03-03 13:47:44
http://imrdsoacha.gov.co/silvitra-120mg-qrms
2022-04-19 11:17:55