2012-04-06 90 views
0

我想写一个短PROGRAMM,它取代一个字符串的计数的替换一部分。所以我想以0开头的字符串开头。因为它是一个很长的字符串,我不想通过我自己来改变它。 因此字符串(在本示例中)是:字符串LINE:爪哇 - 搜索和一个String

  1. Lorem存有悲坐阿梅特,consetetur sadipscing elitr,SED直径nonumy eirmod tempor invidunt UT labore等dolore
  2. 蚤aliquyam ERAT,SED直径voluptua 。
  3. 在vero eos et accusam et justo duo dolores et ea rebum。 STET clita kasd gubergren,没有海takimata圣哉EST Lorem存有
  4. 悲坐阿梅德。 Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invorunt 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. 没有海takimata圣哉EST Lorem存有悲坐阿梅德。

而且我希望字符串从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

回答

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) + "."); 
} 
+0

我改变了它在: 公共静态无效的主要(字串[] args){ \t \t \t \t \t INT \t计数器= 1; \t \t \t 而\t(计数器<= 300){ \t \t \t INT计数器2 = 1; \t \t \t \t \t \t String Counterstring; \t \t \t Counterstring =(new Integer(counter2))。toString()+“。”; \t \t \t int ReplaceCounting = 0; \t \t \t \t \t \t字符串替换=(新的整数(ReplaceCounting))的toString()+ “”; \t \t \t Line = Line.replace(Counterstring,Replace); \t \t \t ++ ReplaceCounting; \t \t \t ++ Counter; \t \t \t ++ counter2; \t \t \t \t } \t \t \t \t \t的System.out.println(线); \t \t \t} } 但它仍然会改变第一个“1”。进入“0”。...所以它的0,2,3,4 ...但我想要计数去0,1,2,3,4 – Ahmad 2012-04-06 23:19:31

+0

@ user1253575不要将代码粘贴到注释中。改为向您的问题添加更新。 – trutheality 2012-04-06 23:20:34

+0

好吧我将它保存为编辑 – Ahmad 2012-04-06 23:22:42

2

首先,像乔恩说,没有适当的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); 

注意我是如何初始化我的循环之外我的柜台。