gpt4 book ai didi

java - 将字符追加到数组列表中的特定位置

转载 作者:行者123 更新时间:2023-11-30 02:53:01 26 4
gpt4 key购买 nike

public void reveal(char c) {

for(int i = 0; i < sizeReset; i++) {
if(wordCompare.charAt(i) == c) revealed.set(i);
if(revealed.cardinality() == 0) {
eo.add(String.valueOf('*'));
}
else {
if(revealed.get(i) == true) {
eo.add(String.valueOf(wordCompare.charAt(i)));
}
else {
eo.add(String.valueOf('*'));
}
}

}
System.out.println(eo.toString());
jTextPane1.setText(eo.toString().replace("[", "").replace("]", "").replace(",", ""));
}

注意:

字符串 wordCompare - 包含要猜测的单词。

char c - 是用户输入的字母

显示 - 被声明为 BitSet

int sizeReset - 是要猜测的单词的大小

假设 ArrayList eo = new ArrayList();在方法外部声明。 (全局)

================================================

这就是我到目前为止所拥有的。假设我会猜测“香蕉”。将显示用户输入的字母,其余字母将标记为“*”。

==============================================

问题:它将包括“”在内的整个值 append 到 arrayList 中存储值的末尾,而不是我希望它们所在的特定位置。(“”也应该 append 时不包含。仅包含用户输入的字母)。 *刽子手游戏的逻辑。

示例:

输入的第一个字母:“a”

输出:

_a_a_a

输入的第二个字母:“n”

输出:

_ _n_n_

(这是错误的)

正确的输出应该是:

_anana

==================================================

我是字符串操作的新手,在这部分遇到了问题。我读过一些关于 StringBuilder 的文章,但我还没有弄清楚。如果你能帮助我,那就太好了。提前致谢。 :)

最佳答案

你是对的,这可以使用StringBuilder来完成。您只需将包含 char 的原始 String 中索引处的 char 替换为 char ,可以使用 setCharAt 来完成.

下面的代码也保持空白字符相同,这就是构造函数中对空白进行特殊处理的原因。

import java.text.MessageFormat;

public class StringReveal {

private final String original;

private final StringBuilder stringBuilder;
private String currentString;
private int missingLetters;

public StringReveal(String original, char placeholder) {
if (original.indexOf(placeholder) >= 0) {
throw new IllegalArgumentException("placeholder must not be contained in the string");
}

if (Character.isWhitespace(placeholder)) {
throw new IllegalArgumentException("placeholder must not be a whitespace character");
}

this.original = original;
this.stringBuilder = new StringBuilder();
this.missingLetters = original.length();

for (char c : original.toCharArray()) {
if (Character.isWhitespace(c)) {
// keep whitespace characters the same
missingLetters--;
stringBuilder.append(c);
} else {
// replace everything else with placeholder char
stringBuilder.append(placeholder);
}
}
this.currentString = stringBuilder.toString();
}

public void reveal(char c) {
int index = original.indexOf(c);
if (index < 0 || currentString.charAt(index) == c) {
// if letter was already replaced or does not exist in the original
// there's nothing to do
return;
}

do {
// replace char
stringBuilder.setCharAt(index, c);
missingLetters--;

// find next char
index = original.indexOf(c, index + 1);
} while (index >= 0);

currentString = stringBuilder.toString();
}

public String getCurrentString() {
return currentString;
}

public int getMissingLetters() {
return missingLetters;
}

public static void main(String[] args) {
StringReveal stringReveal = new StringReveal("banana bread", '*');

char[] guesses = {'a', 'x', 't', 'a', 'b', 'k', 'n', 'g', 'd', ' ', '*', 'r', 'w', 'e'};

System.out.println("Try to guess this sting: " + stringReveal.getCurrentString());

for (char guess : guesses) {
stringReveal.reveal(guess);
System.out.println(MessageFormat.format("Current String: {0} ; guess: ''{1}''; you still have to guess {2} letters",
stringReveal.getCurrentString(),
guess,
stringReveal.getMissingLetters()));
}
}

}

关于java - 将字符追加到数组列表中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38070355/

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