因此,对于任务我必须生成一个随机代码,并有人猜测控制台中的代码。现在我的问题是,我似乎无法找到一种方法来替换代码中的任何重复字符。代码必须在“ABCDEF”范围内,并且包含4个字母。这是我走到这一步:java替换重复字符
char codeLetters;
String masterCode;
StringBuilder strings = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 4; i++) {
codeLetters = code[random.nextInt(code.length)];
strings.append(codeLetters);
}
masterCode = strings.toString();
String temp = "";
boolean isDuplicate = false;
for (int i = 0; i < masterCode.length(); i++) {
isDuplicate = false;
char comparisonChar = masterCode.charAt(i);
for (int j = i + 1; j < masterCode.length(); j++) {
char nextChar = masterCode.charAt(j);
if (comparisonChar == nextChar) isDuplicate = true;
}
if (!isDuplicate) temp = temp + comparisonChar;
}
masterCode = temp;
System.out.println(masterCode);
它打印要么由出2-3个字母代码,或含5个或6个字母的字符,且很少与4个字母一个正确的代码。据我所知,这段代码所做的不是添加重复字符,而是我希望它将它们替换为另一个字符。有没有办法用另一个随机生成的字符来替换字符,而不使用集合呢?
你看过'String#replace'或'String#replaceAll'吗? – Ascalonian
检测到重复项后用另一个随机生成的char替换可能不是您想要的方式。尽管不太可能,但理论上它可能永远不会终止 - 而且可能需要很长时间才能完成一项简单的任务。我会考虑改变你的逻辑,如果你真的想从任意顺序的6中随机选择4。从@AndyBrown下面的答案显示了一种方法来做到这一点(http://stackoverflow.com/a/27987066/838992) –
我在StackOverflow查找了很多问题,但现在我看到我一直在寻找一直以来都是错误的。我试过String#replace和String#replaceAll,但是它大多只会替换彼此相关的重复项,或者用另一个重复项替换它。 – Arrrow