2

Targer - 需要计算有多少个 6 位数字的左右 3 位数字之和相同

做了什么- 准备了 3 种方法:

1-st - 从数字中计算左 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-nd - 从数字中计算右 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);
}

调试 - 示例

在此处输入图像描述

第一种方法的结果

在此处输入图像描述

第二种方法的结果

在此处输入图像描述

问题- 第三种方法有什么问题,为什么它总是只返回 0 而计数器永远不会增加?

4

1 回答 1

2

在您的第三种方法中,分配: -

counter = counter++;

counter价值没有影响。完成此任务后,counter仅剩0。您需要删除分配部分,并且只有increment部分:-

counter++;

if block只有当你的左右总和相等时,你才需要在你的内部进行增量。

也可以看看: -

于 2013-02-05T19:39:17.857 回答