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 から開始し、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にしたい

4

3 に答える 3

8

カウンターをインクリメントしても、ループが繰り返されるたびにカウンターを 1 と 0 にリセットします。おそらくこのコードを移動する必要があります。

int NormCounter = 1;
int ReplaceCounter = 0;

for ループの外側へ:

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 のコメントを参照してください。

また、Java コーディング規約の単なるプラグインです。Java 変数の名前の先頭文字を小文字にするのが標準です。たとえば、normCounterの代わりに使用しNormCounterます。

于 2012-04-06T23:45:38.083 に答える
2

他の人が示唆したように、変数の割り当てを for ループの外側に配置します。ただし、コードはまだ機能せず、「31」と一致します。最初の繰り返しで「30」に変更します。その後の反復では、「30」に一致します。「29.」に変更すると、実際には「31.」に変更されます。「30.」ではなく「29.」に。あなたがしたいように。以下を試してください:(数字の前にスペースがあると思います)

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

今のところはこれでうまくいくはずです。

注: 変数名を小文字で始め、大文字で始まる名前をクラス名に使用するのが一般的です。

于 2012-04-06T23:57:16.703 に答える
0

int NormCounter = 1; を配置します。int ReplaceCounter = 0; for ループの外側

于 2012-04-06T23:51:07.520 に答える