私は文字列の配列を持っている:ランダムに選択された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());
は、私にはわかりませんそれはここにあるが、私はそれをそれと同様にすることができることを知っている。私の質問は、これを達成するより効率的な方法があるということですか?
ループを使用してください。おそらく –
IMHOランダムに取得された最初のものと同じ名前を取得するという意味では、これは実際にランダムではありません。 –
メモリ効率の面では、おそらくソリューションが最も良いでしょう。私は本当にこれをもっと良くする方法を見ていません。もちろん、これを少し改善するためのいくつかの小さなトリックがあるかもしれませんが、それはあなたがそれに費やす時間の価値がない可能性が最も高いでしょう。 –