0

我想写一个简短的程序来代替字符串的计数。所以我想以 0 insted of 1 开始字符串。而且因为它是一个长字符串,我不想自己更改它。所以字符串(在这个例子中)是:字符串 LINE:

  1. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore
  2. magna aliquyam erat,sed diam voluptua。
  3. 在 vero eos et accusam et justo duo dolores et ea rebum。Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
  4. dolor 坐在一起。Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore
  5. magna aliquyam erat,sed diam voluptua。在 vero eos et accusam et justo duo dolores et ea rebum。Stet clita kasd gubergren,
  6. no sea takimata sanctus est Lorem ipsum dolor sit amet。

我希望字符串从 0 开始计数。

    public static void main(String[] args) {


    int Counter = 1;

    while (Counter <=300){
        int counter2 =1;
        String Counterstring ;
        Counterstring = (new Integer(counter2)).toString() + ".";
        int ReplaceCounting = 0;
        String Replace = (new Integer(ReplaceCounting)).toString() + ".";
        Line.replace(Counterstring , Replace);

        Counter++;

    }

    System.out.println(Line);

}

}

有人可以告诉我我做错了什么吗?输出是一样的。

编辑:

我把它改成: 我把它改成:

   public static void main(String[] args) {




    for (int counter = 1; counter <= 300; counter++) {

        int NormCounter =1;
        int ReplaceCounter = 0;

        String NormCounterS  = (new Integer(NormCounter)).toString() + ".";


        String ReplaceCounterS = (new Integer(ReplaceCounter)).toString() + ".";
        Line = Line.replace(NormCounterS , ReplaceCounterS);
        ++ReplaceCounter;

        ++NormCounter;



    }

    System.out.println(Line);

}

}

但它仍然改变了第一个“1”。进入“0。”......所以它的0,2,3,4......但我希望计数去0,1,2,3,4

4

2 回答 2

5

您假设字符串是可变的。他们不是。调用replace然后忽略返回值不会有任何用处。你要:

Line = Line.replace(Counterstring, Replace);

尽管出于偏好,您应该使用camelCase变量名,并避免无缘无故地做大量工作。例如,您的循环会更好:

for (int counter = 1; counter <= 300; counter++) {
    line = line.replace("1.", "0.");
}

不清楚你为什么要多次这样做,当然......你的描述对我来说很模糊,我害怕。

编辑:使用您编辑的代码,看起来您真的想要:

for (int counter = 1; counter <= 300; counter++) {
    line = line.replace(counter + ".", (counter - 1) + ".");
}
于 2012-04-06T23:06:04.553 回答
2

首先,就像 Jon 所说的那样,没有适当camelCase的变量会使您的代码对于普通 Java 用户几乎不可读。您发布的任何新代码都应该真正使用既定的约定。

现在,至于您的代码,您每次遍历循环时都会重置计数器。所以每次你到达line.replace(normCounter, replaceCounter)它的时候line.replace("1.", "0.")

这是你应该做的:

int replaceCounter = 0;
for (int counter = 1; counter <= 300; counter++) {
  line = line.replace(String.valueOf(counter) + ".", String.valueOf(replaceCounter) + ".");
  replaceCounter++;
}

System.out.println(line);

请注意我是如何在 for 循环之外初始化计数器的。

于 2012-04-07T05:05:39.673 回答