gpt4 book ai didi

java 替换重复字符

转载 作者:行者123 更新时间:2023-11-29 03:13:30 24 4
gpt4 key购买 nike

因此,对于一项作业,我必须生成一个随机代码,并让某人在控制台中猜测该代码。现在我的问题是我似乎无法找到一种方法来替换代码中的任何重复字符。该代码必须在“ABCDEF”范围内,并且包含 4 个字母。这是我到目前为止得到的:

    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 个字母的正确代码。据我所知,这段代码的作用不是添加重复字符,而是我希望它用另一个字符替换它们。有没有办法在不使用集合的情况下用另一个随机生成的字符替换字符,该字符还不在字符串中?

最佳答案

听起来您只想在 code 中使用每个字母一次?为什么不使用 ArrayList 从一开始就设置它,并删除随机选择的每个字符:

// copy `code` into a temporary arraylist
ArrayList<Character> possibleLetters = new ArrayList<Character>(code.length);
for (char c : code) possibleLetters.add(c);
// select randomly "without replacement"
for (int i = 0; i < 4; i++) {
int index = random.nextInt(possibleLetters.size());
codeLetters = possibleLetters.remove(index);
strings.append(codeLetters);
}

关于java 替换重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com