[英]How do I replace nth character in a String with a new character?
我被要求编写一个使用特定规则对给定句子进行编码的类。 此类应使用循环和Stringbuffer
。 规则是:
我已经编写了代码,但是我无法理解为什么它不起作用。 有人可以帮忙吗?
例如:
句子=“ Katie喜欢观察自然。”
它应该转换为:
“ Kaie iks t obere ntue * 8”
但是,使用我的代码,我得到:“ Katie喜欢观察自然*。”
谢谢!
public void createEncodedSentence() {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append('*');
}
if (a != ' ' && a != '.') {
counter++;
}
if (counter % 3 == 0) {
buff.append("");
}
buff.append(sentence.charAt(i));
}
encodedSentence = buff.toString();
}
逻辑的主要问题是,在将字符串附加到buff
之后,您将继续该迭代,而不是跳转到字符串中的下一个字符。
将您的方法更改为如下:
public static StringBuffer createEncodedSentence(String sentence) {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append("*");
continue;
}
if ((i + 1) % 3 == 0 && a != ' ' && a != '.') {
counter++;
continue;
}
buff.append(sentence.charAt(i));
}
buff.append(counter);
return buff;
}
逻辑:
.
然后添加*
并跳到句子中的下一个字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.