创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组
统计这个字符串数组里重复的字符串有多少种
package charactor;
public class TestString{
public static void main(String[] args) {
String[] table=new String[100];
System.out.println("随机字符串为:");
for (int i = 0; i < table.length; i++) {
int len=2;
table[i]=getRandomString(len);
System.out.print(table[i]+" ");//获取随机字符串数组并打印
}
String repeat="";//找到重复的字符串并打印
int count=0;
for (int i = 0; i < table.length; i++) {
for (int j = i+1; j < table.length; j++) {
if (table[i].equals(table[j])) {
if (repeat.contains(table[i])) {
continue;
}
count+=1;
repeat=repeat+table[i]+" ";
}
}
}
System.out.println("\n");
System.out.print("重复的字符串有"+count+"种,分别是:"+repeat);
}
public static String getRandomString(int len) {//获取随机字符串数组元素的方法
char[] ch=new char[len];
for (int i = 0; i < len; i++) {
int k=0;
while(k<len){
int m=(int) (48+Math.random()*75);//random产生的随机数在[0.0,1.0)中,左闭右开。取74的话就取不到122
if((48<=m && m<=57) || (65<=m && m<=90) || (97<=m && m<=122) ) {
ch[i]=(char)m;
k++;
}
}
}
// String str=Arrays.toString(ch);//直接用ch.toString()会出错
String str=new String(ch);//新建对象,用对象方法完成字符转字符串
return str;
}
}
一开始遇到了输出有空格的情况,经检查后在getRandomString(int len)中添加了k参数,用以确保每一个ch都被“填满”。注意,此处的k要对每一个字符数组都有一样的约束,所以放在for循环内。
此外,用Arrays.toString(ch)作为返回值的话,输出会是数组形式。目前认为这是一种快捷输出字符数组的方法,无需手写循环格式。
顺便转一下数组打印时遇到的问题。原文:https://blog.csdn.net/qq_33343480/article/details/52318966?utm_source=copy
1.数组打印
int []num = {1,2,3,4,5};
System.out.println(num.toString());
//输出:[I@15db9742
System.out.println(Arrays.toString(num));
//输出:[1, 2, 3, 4, 5]
int [][]nums = {{1,2},{3,4,5},{6,7}};
System.out.println(Arrays.toString(nums));
//输出:[[I@6d06d69c, [I@7852e922, [I@4e25154f]
System.out.println(Arrays.deepToString(nums));