JAVA编程 随机生成10个[a-z]的字符存放在字符串数组str中,然后使用Map的key来保

java中将a-z存到数组中,随机分配给用户~

class User{//用户类String name;public User(){}public User(String name){this.name = name;}}public class TestChar {public static void main(String[] args) {//定义一个cs数组用于存储26个小写字母a~zchar[] cs = new char[26];for (int i = 0; i < cs.length; i++) {cs[i]=(char) ('a'+i);} User user = new User(); int length = (int)(Math.random()*5)+3;//随机名字长度3~7位 char[] cc = new char[length];//用于存储名字的字符数组 for (int i = 0; i < length; i++) {int temp = (int)(Math.random()*26);cc[i] = cs[temp];//随机字母} user.name = new String(cc);//将字符数组转变成字符串 System.out.println(user.name);//输出}}

其实最简单的方法是把这些字符串一个一个放到map中,利用map存放的无序性达到随机的目的,输出的时候遍历map就可以了
当然了这样做也有缺陷,虽然是无序的,但是第一次和第二次是一样的,也就是你每次执行输出的结果都是一样的。
第二种方法就是利用随机值了,生成随机值,然后根据随机值取数组中的值,这样会有重复
继续优化:每次取出值后将数组中被取出的值删除,并且将随机数生成的最大值-1,这样就做到了

import java.util.TreeMap;

public class Test {
// 统计数字或者字符出现的次数
public static TreeMap<Character, Integer> Pross(String str) {
char[] charArray = str.toCharArray();

TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

for (int x = 0; x < charArray.length; x++) {
if (!tm.containsKey(charArray[x])) {
tm.put(charArray[x], 1);
} else {
int count = tm.get(charArray[x]) + 1;
tm.put(charArray[x], count);
}
}
return tm;
}
public static void main(String[] args) {
String temp = "abcdefghijklmnopqrstuvwxyz";
String str = "";
int randNum;
for(int i = 0; i < 10; i++){
randNum = (int)((26)*Math.random());
str += temp.charAt(randNum);
}
System.out.println("生成的新字符串:" + str);
TreeMap<Character, Integer> tm = Pross(str);
System.out.println(tm);
}
}



import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class SimpleRandom {

public static void main(String[] args) {
Map<String, Integer> randomResultMap = new HashMap<String, Integer>();
String[] randomResultArr = new String[10];
// A = 65, a = 97
int idx = 0;
while(idx < randomResultArr.length) {
String randomChar = String.valueOf((char) (Math.random() * 26 + 97));
randomResultArr[idx] = randomChar;
if (randomResultMap.containsKey(randomChar)) {
randomResultMap.put(randomChar, randomResultMap.get(randomChar) + 1);
} else {
randomResultMap.put(randomChar, 1);
}
idx++;
}

// Test
System.out.println(Arrays.toString(randomResultArr));
for(Map.Entry<String, Integer> entry : randomResultMap.entrySet()) {
System.out.println(String.format("Key=%s, Count=%d", entry.getKey(), entry.getValue()));
}
}

}



相关兴趣推荐

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网