我想编写一个简短的程序,它取代了字符串的计数。所以我想用0的insted开始字符串。因为它是一个很长的字符串我不想用我自己的改变它。所以String(在这个例子中)是:String LINE:
我希望字符串以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
答案 0 :(得分:8)
即使递增计数器,每次循环迭代时,都会将计数器重新设置为1和0。您应该移动此代码:
int NormCounter = 1;
int ReplaceCounter = 0;
在for-loop之外:
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's comment。
也只是Java编码约定的一个小插件:标准的Java变量用小写的起始字母命名。例如。使用normCounter
代替NormCounter
。
答案 1 :(得分: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 + ".");
}
现在应该可以做到这一点。
注意:通常使用小写字母开始变量名称,并使用以大写字母开头的名称。
答案 2 :(得分:0)
放置int NormCounter = 1; int ReplaceCounter = 0;在for循环之外