2012-04-06 31 views
0

文字列のカウントを置き換える短いprogrammを書きたいと思っていました。だから私は1のinsted 0でストリングを始めたいと思います。そして、それは長い文字列なので、私は自分自身でそれをすべて変更したくありません。 だから(この例では)文字列である:文字列LINE:Java - 文字列の検索と置換

  1. Loremのイプサム悲しみconsetetur sadipscing elitr、SED DIAM nonumy eirmod tempor invidunt UT laboreらdolore
  2. マグナaliquyamのERAT、SED DIAM voluptua、AMET座ります。
  3. と、accusam et justo duo dolores et ala rebum。 Stet clita kasd gubergren、no takimata sanctus est Lorem ipsum
  4. dolor sit amet。 Lorem ipsum dolor sitetet、consetetur sadipscing elitr、sed diam nonamy eirmod tempor invidunt ut labororeとdolore
  5. magna aliquyam erat、sed diam voluptua。卒業生と卒業生は、卒業後も卒業しています。 Stet clita kasd gubergren、
  6. いいえsea takimata sanctus est Lorem ipsum dolor sit amet。

そして私は、文字列が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,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."); 
} 

...、私は怖いです。

EDIT:あなたの編集したコードと、それはあなたが本当にしたいのようになります。

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

私はそれを変更: \t \t {パブリック静的な無効メイン(文字列[]引数)\t \t \t \t INTカウンタ= 1。 \t \t \t \t一方(カウンタ<= 300){ \t \t \t INTカウンタ2 = 1。 \t \t \t \t \t \t文字列カウンターストリング; \t \t \t Counterstring =(新しい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 ++カウンタ; \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

+0

@ user1253575コメントにコードを貼り付けないでください。代わりにあなたの質問に更新を加えてください。 – trutheality

+0

ok私は編集として保存しました – Ahmad

2

まずオフ、ジョンが言ったように、あなたの変数のcamelCase正しいが、通常のJavaユーザのためのあなたのコードはほとんど読めなくなります持っていません。投稿する新しいコードは、実際に確立された規約を使用する必要があります。

ここで、コードについては、ループを反復するたびにカウンタをリセットしています。私は私のforループの外で私のカウンタを初期化する方法

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

System.out.println(line); 

お知らせ:だからそれはline.replace("1.", "0.")

をやっているあなたがline.replace(normCounter, replaceCounter)に着くたびにここにあなたがやるべきものです。

関連する問題