我有字符串的数组:匹配随机选择的2个字符串如果它们不超过12个字符的限制?
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());
我不知道这是否代码完全将工作,因为我打字它在这里,但我知道我可以做到这一点类似。我的问题是,是否有更高效的方法来实现这一目标?
使用一些while循环,也许 –
恕我直言,这是不是真的随机的意义上,你会得到相同的第二个名字为第一个随机获得。 –
就存储效率而言,您的解决方案可能是最好的。我真的没有办法让这个好多了。当然,可能有一些小技巧可以稍微改进,但最有可能不值得你花费在这个上的时间。 –