目标 - 需要计算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);
}
调试 - 示例
第一种方法的结果
第二种方法的结果
问题 - 3-rd方法有什么问题,为什么它总是只返回0而计数器永远不会增加?
答案 0 :(得分:2)
在 3rd 方法中,分配: -
counter = counter++;
对counter
值没有影响。完成此分配后,counter
仅保留0
。您需要删除分配部分,并且只有increment
部分: -
counter++;
只有当左右总和相等时,才需要在if block
内进行增量。
另见: -