2

ターガー-6桁の数字の左右の合計が同じである数を数える必要があります3桁

をしたか-3つの方法を準備しました:

1番目-数字から左3桁の合計を数える-正常に動作する

private static int counterLeft3(int i) {
    int digitCounter=0;
    int summLeft3=0;
    while (digitCounter!=3){
        summLeft3=summLeft3+(i%10);
        i=i/10;
        digitCounter++;
    }
    return summLeft3;
}

2番目-数字から右3桁の合計を数える-正常に動作する

 private static int counterRight3(int i) {
    int summRight3=0;
    int buffer;
    int counter=0;
    while (counter!=3){
        summRight3=summRight3+(i%10);
        i=i/10;
        counter++;
    }
    buffer =i;
    summRight3=0;
    while (buffer!=0){
        summRight3=summRight3+(buffer%10);
        buffer=buffer/10;
    }
    return summRight3;
}

3- dr-数のq-tyを数えるためのサイクル-常に0を返します。thnink-ここで私の間違いを思いついた:

private static void summCounter() {
    int counter=0;
    for (int i=111110; i<1000000; i++){
        if (counterRight3(i)==counterLeft3(i)){ 
        }
        counter = counter++;
    }
    System.out.println("Q-ty is " + counter);
}

デバッグ-例

ここに画像の説明を入力してください

1番目の方法の結果

ここに画像の説明を入力してください

2番目の方法の結果

ここに画像の説明を入力してください

質問-3番目の方法の何が問題になっていますか?なぜそれは常に0だけを返し、カウンターは決して増加しないのですか?

4

1 に答える 1

2

3番目の方法では、割り当て:-

counter = counter++;

値には影響しませんcounter。この割り当ての後、のみcounter残り0ます。あなたは割り当て部分を削除する必要があります、そしてただincrement部分を持っている:-

counter++;

if blockそして、あなたはあなたの左と右の合計が等しいときだけあなたの中で増分をする必要があります。

参照:-

于 2013-02-05T19:39:17.857 に答える