我有字符串的數組:匹配隨機選擇的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循環,也許 –
恕我直言,這是不是真的隨機的意義上,你會得到相同的第二個名字爲第一個隨機獲得。 –
就存儲效率而言,您的解決方案可能是最好的。我真的沒有辦法讓這個好多了。當然,可能有一些小技巧可以稍微改進,但最有可能不值得你花費在這個上的時間。 –