0

文字列のカウントに代わる短いプログラムを書きたかったのです。だから私は文字列を 0 insted 1 で開始したいと思います。そして、それは長い文字列なので、自分ですべてを変更したくありません。したがって、文字列 (この例では) は次のとおりです。 文字列 LINE:

  1. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labe et dolore
  2. Magna aliquyam erat、sed diam voluptua。
  3. vero eos et accusam et justo duo dolores et ea rebum で。Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
  4. dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labe et dolore
  5. Magna aliquyam erat、sed diam voluptua。vero eos et accusam et justo duo dolores et ea rebum で。クリタ kasd gubergren を開始します。
  6. no 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.」に...だから0,2,3,4...しかし、カウントを0,1,2,3,4にしたい

4

2 に答える 2

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) + ".");
}
于 2012-04-06T23:06:04.553 に答える
2

まず、Jon が言ったように、適切な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);

for ループの外でカウンターをどのように初期化したかに注目してください。

于 2012-04-07T05:05:39.673 に答える