【问题标题】:Adding characters to a string in forloop在for循环中将字符添加到字符串
【发布时间】:2017-05-16 16:44:00
【问题描述】:

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

//编辑它现在正在工作。我修复了'counter == 0',但这并没有什么区别,因为我在最后添加了字符。 我更改的另一件事是在每个语句之后添加一个“继续”。

 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);}
}

【问题讨论】:

  • 首先,如果您正在构建字符串,我建议使用 StringBuilder 而不是 String。
  • 不需要继续,因为它会在到达结束括号时自动循环。你也没有改变int counter = 1;

标签: java for-loop


【解决方案1】:

您在循环开始之前将 counter 设置为 1,但在循环中您检查它是否等于 0。它永远不会为 0,因为您对 counter 所做的唯一事情就是递增或设置它改为 1。这几乎肯定是你的错误所在。

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 2014-06-05
    • 2016-02-26
    • 2015-01-17
    • 2021-12-17
    • 2020-06-29
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多