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 开始计数。然后继续 1.2.3....(0,1,2,3,4...)

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

3 回答 3

8

即使您增加了计数器,每次循环迭代时您都将计数器重新设置为 1 和 0。您可能应该移动此代码:

int NormCounter = 1;
int ReplaceCounter = 0;

在for循环之外:

public static void main(String[] args) {

    int NormCounter = 1;
    int ReplaceCounter = 0;

    for (int counter = 1; counter <= 300; counter++) {
        String NormCounterS  = NormCounter + ".";
        String ReplaceCounterS = ReplaceCounter + ".";

        Line = Line.replace(NormCounterS, ReplaceCounterS);

        ++ReplaceCounter;
        ++NormCounter;
    }

    System.out.println(Line);
}

还要注意如何String NormCounterS = (new Integer(NormCounter)).toString() + ".";更简单地重写String NormCounterS = NormCounter + ".";。(最终结果是一样的)。

有关此方法的其他错误修复,请参阅Laky 的评论。

也只是 Java 编码约定的一个小插件:使用小写首字母命名 Java 变量是标准的。例如使用normCounter而不是NormCounter.

于 2012-04-06T23:45:38.083 回答
2

正如其他人建议的那样,将变量赋值放在 for 循环之外。但是,您的代码仍然不起作用,您将匹配“31”。在第一次迭代中并将其更改为“30”。然后在后面的迭代中,您将匹配“30”。并将其更改为“29.”,因此您实际上将更改为“31”。改为“29”,而不是“30”。如你所愿。尝试以下操作:(我假设数字前面有一个空格)

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

编辑:可能更好的解决方案是使用 replaceFirst 并且这次不需要假设:

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

现在应该可以了。

注意:变量名通常以小写字母开头,类名以大写字母开头。

于 2012-04-06T23:57:16.703 回答
0

将 int NormCounter =1; 整数替换计数器 = 0;在 for 循环之外

于 2012-04-06T23:51:07.520 回答