我想编写一个简短的程序,替换字符串的计数。所以我想以0 insted of 1开始字符串。因为它是一个长字符串,我不想自己改变它。所以字符串(在本例中)是:字符串行:
我希望字符串以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
你假设字符串是可变的。他们不是。调用替换
然后忽略返回值将没有任何用处。你想要:
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) + ".");
}
首先,正如Jon所说,变量没有适当的camelCase
会使普通Java用户几乎无法阅读您的代码。您发布的任何新代码都应该真正使用已建立的约定。
现在,至于你的代码,你每次迭代循环时都要重置计数器。所以每次你到达line.替换(NormCounter, replace eCounter)
它都在做line.替换("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循环之外初始化计数器的。