Java 向forloop中的字符串添加字符

Java 向forloop中的字符串添加字符,java,for-loop,Java,For Loop,我的代码有点问题。 我想遍历一个带有for循环的字符串,将“*”替换为“*”,并用“*nc*”替换多次出现的字符,其中n是出现的次数,c是字符 我用for循环遍历字符串,但最后只得到一个字母,而不是一个完整的字符串。 如果我输入“ff”,它将正确返回*2f*,但如果我添加任何其他内容,它只会再次覆盖它 例如,如果我输入“abcdefg”,我将得到“g”而不是“abcdefg” “输入”是一个JTextField String inputs = input.getText(); String re

我的代码有点问题。 我想遍历一个带有for循环的字符串,将“*”替换为“*”,并用“*nc*”替换多次出现的字符,其中n是出现的次数,c是字符

我用for循环遍历字符串,但最后只得到一个字母,而不是一个完整的字符串。 如果我输入“ff”,它将正确返回*2f*,但如果我添加任何其他内容,它只会再次覆盖它

例如,如果我输入“abcdefg”,我将得到“g”而不是“abcdefg”

“输入”是一个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);
String inputs=input.getText();
字符串结果=新字符串();
int计数器=1;
对于(int i=0;i
//编辑它现在可以工作了。我修复了'counter==0',但这并没有什么区别,因为我在末尾添加了字符。 我改变的另一件事是在每条语句后添加一个“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);}
}
for(int i=0;i
在循环开始之前,您将
计数器设置为1,但在循环中检查它是否等于0。它永远不会是0,因为您对
计数器所做的唯一一件事就是增加它或将它设置为1。这几乎可以肯定是您的错误所在。

首先,我建议使用StringBuilder而不是String(如果是)您正在生成一个字符串。不需要continues,因为它在到达结束括号时将自动循环。此外,您没有更改
int counter=1;