我的代码有点问题。 我想通过for循环遍历一个字符串并用'**'替换'*'和任何用“* nc *”替换出现多次的字符,其中n是出现次数,c是字符。
我正在使用for循环访问String,但最终只有一个字母而不是完整的String。 如果我输入“ff”,它将正确返回* 2f *但如果我添加任何其他它只是再次覆盖它。
例如,如果我输入“abcdefg”,我会得到“g”而不是“abcdefg”。
“input”是一个JTextField。
String inputs = input.getText();
String result = new String();
int counter = 1;
for(int i = 0; i < inputs.length(); i++){
if(inputs.charAt(i) == '*')result += "**";
else if(i < inputs.length()-1){
if(inputs.charAt(i) != inputs.charAt(i+1) && counter == 0){
result = result + inputs.charAt(i);
}
else if(counter != 1 && inputs.charAt(i) != inputs.charAt(i+1)){
result = (String)(result + "*" + counter + inputs.charAt(i) + "*");
}
else if(inputs.charAt(i) == inputs.charAt(i+1)){
counter++;
}
}
else if(counter != 1){
result = (String)( result + "*" + counter + inputs.charAt(i) + "*");
counter = 1;
}
else result = result + inputs.charAt(i);
//编辑它现在正在运作。我修复了'counter == 0',但这并没有什么区别,因为我最后添加了char。 我改变的另一件事是在每个语句后添加一个'continue'。
for(int i = 0; i < inputs.length(); i++){
if(i < inputs.length()-1){
if(counter != 1 && inputs.charAt(i) != inputs.charAt(i+1)){
result = (String)(result + "*" + counter + inputs.charAt(i) + "*");
counter = 1;
continue;
}
else if(inputs.charAt(i) == inputs.charAt(i+1)){
counter++;
continue;
}
}
else if(counter != 1){
result = (String)(result + "*" + counter + inputs.charAt(i) + "*");
counter = 1;
continue;
}
if(inputs.charAt(i) == '*'){
result += "**";
continue;
}
else{result = result + inputs.charAt(i);}
}
答案 0 :(得分:0)
在循环开始之前将counter
设置为1,但在循环中检查它是否等于0.它永远不会是0,因为你唯一的东西do counter
是增加它还是将其设置为1.这几乎肯定是你的错误所在。