我有一个字符串数组:
String[] possible_names = { "dog", "cat", "man", "woman", "boy", "girl", "table", "chair", "computer", "fat", "phone" };
我想通过从数组中选择 2 个字符串并将它们组合来生成一个字符名称,例如:
Random rn = new Random();
String first_name = possible_names[rn.nextInt(possible_names.length - 1)];
String last_name = possible_names[rn.nextInt(possible_names.length - 1)];
String full_name = first_name + last_name;
问题是,如果全名超过 12 个字符,或者 first_name == last_name,我无法让它生成全名。
我知道只检查字符是否超过 12 或名字和姓氏是否相等并返回会很容易,但我希望它只是..我想如果失败再试一次。
我已经想出了一个方法来做到这一点,但我希望它更有效率而不是消耗内存:
ArrayList<String> acceptable_last_names = new ArrayList<String>();
Random rn = new Random();
String first_name = possible_names[rn.nextInt(possible_names.length - 1)];
for (String s : possible_names) {
if (s.length < (12 - first_name.length)) {
if (!s.equalsIgnoreCase(first_name)) {
acceptable_last_names.add(s);
}
}
}
last_name = acceptable_last_names.get(rn.nextInt(acceptable_last_names.size());
我不知道该代码是否完全有效,因为我在此处输入了它,但我知道我可以像那样做。我的问题是,是否有更有效的方法来实现这一目标?
最佳答案
我会做的是:
- 创建一个字典,其中键是长度,值是具有相同长度的单词数组
- 从键列表中选择一个随机数并获取值(也就是第一个长度)
- 从包含值的数组中选择一个随机数
- 选择一个随机数,其中最大长度 = 12 - 第一个长度
- 选择一个新词(如第 3 步)
- 利润
关于java - 如果不超过 12 个字符的限制,则匹配随机选择的 2 个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46155132/