在forloop

时间:2017-05-16 16:44:01

标签: java for-loop

我的代码有点问题。 我想通过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);}
}

1 个答案:

答案 0 :(得分:0)

在循环开始之前将counter设置为1,但在循环中检查它是否等于0.它永远不会是0,因为你唯一的东西do counter是增加它还是将其设置为1.这几乎肯定是你的错误所在。