题目如下:
我的代码如下:
package character;
public class TestString {
public static char randomChar() {
int startNumber = (int)'A';
int endNumber = (int)'z';
while (true) {
int randomNumber = ((int)(Math.random()\*(endNumber - startNumber + 1))) + startNumber;
if (Character.isLetter(randomNumber) || Character.isDigit(randomNumber)) {
return (char)randomNumber;
}
}
}
public static String randomString(int num) {
char\[\] tempChar = new char\[num\];
//先设定一个指定长度的字符数组
for (int i = 0; i < num; i++) {
tempChar\[i\] = randomChar();
//根据长度,用随机字符把数组填满
}
return new String(tempChar);
//最后把字符数组转成字符串
}
public static String\[\] strArrays(int num) {
String\[\] newStrArrays = new String\[num\];
for (int i = 0; i < num; i++) {
newStrArrays\[i\] = randomString(2);
}
return newStrArrays;
}
public static int countNum(String\[\] strArrays) {
int sum = 0;
for (int i = 0; i < strArrays.length - 1; i++) {
int count = 0;
if (strArrays\[i\] == null) {
continue;
}
for (int j = i+1; j < strArrays.length; j++) {
if (strArrays\[i\].equals(strArrays\[j\])) {
count++;
strArrays\[j\] = null;
}
}
if (count > 0) {
sum++;
}
System.out.printf("有重复的元素位置是%s,重复的元素是%s\\n",i,strArrays\[i\]);
}
return sum;
}
public static void main(String\[\] args) {
// TODO Auto-generated method stub
System.out.println("生成随机字符串:");
String\[\] strArray = strArrays(100);
for(int i = 0; i < strArray.length; i++) {
System.out.print(strArray\[i\] + " ");
}
System.out.println();
System.out.println("--------------------------------------------");
int sum = countNum(strArray);
System.out.println("--------------------------------------------");
System.out.println("--------------------------------------------");
System.out.println(sum);
}
}
得到的结果竟然是这样的:
我仔细检查了代码,没发现什么问题啊,这是怎么回事呢?