我想编写一个简短的程序,替换字符串的计数。所以我想以0 insted of 1开始字符串。因为它是一个长字符串,我不想自己改变它。所以字符串(在本例中)是:字符串行:
我希望字符串以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
即使您增加计数器,您也会在每次循环迭代时将计数器重新设置为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=NormCounterS ".";
。(最终结果是相同的)。
有关此方法的附加bug修复,请参阅Laky的注释。
Java编码约定的一个小插件:用小写起始字母命名Java变量是标准的。例如,使用NormCounter
而不是NormCounter
。
正如其他人建议的那样,将变量赋值放在for循环之外。但是,您的代码仍然无法工作,您将在第一次迭代中匹配“31.”并将其更改为“30.”,然后在以后的迭代中,您将匹配“30.”并将其更改为“29.”,因此您实际上将“31.”更改为“29.”,而不是您想要的“30.”。尝试以下操作:(我假设数字前面有一个空格)
for (int counter = 0; counter < 300; counter++) {
line = line.replace(" " + (counter + 1) + ".", " " + counter + ".");
}
编辑:可能更好的解决方案是使用replace First,这次不需要假设:
for (int counter = 0; counter < 300; counter++) {
line = line.replaceFirst((counter + 1) + ".", counter + ".");
}
现在应该可以了。
注意:通常以小写字母开头变量名,并使用以大写开头的名称作为类名。
放置int NormCounter=1; int Replace eCounter=0;在for循环之外