3

我正在做一个学校作业,所以我正在寻找关于我做错了什么的指导。这是一个更大程序的一部分,但我正在尝试在实现程序的其余部分之前进行循环。基本上,我的循环假设遍历所有数字,然后添加所有其他数字,例如:

如果输入的数字是 48625,则返回 5+6+4 的和。我想我必须将我的循环与 if 语句结合起来遍历每个第 n 个数字,所以这就是我到目前为止的工作:

class testLoop{

    public static void main (String args[]){

        int num = 12345;
        int sum = 0;

        for(int i = 0; num > 0; i++)
        {
            if(i%num == 0)
            {
                sum += num % 10;
            }

            num /= 10;

        System.out.println(sum);
    }
    }

}

不幸的是,这不起作用。它返回 6,5,5,5,5。它没有按计划添加第 n 个值。

我还尝试了以下方法:

int num = 12345;
int sum = 0;

while(num > 0) {
    sum += num % 10;
    num /= 10;
}

但这也不起作用,它返回 15,这基本上是变量 num 中所有数字的总和。我知道我接近解决方案,它介于我的两个代码之间,但我似乎无法正确解决。

4

3 回答 3

5

只需除以 100。这将跳过偶数。

int num = 12345;
int sum = 0;

while(num > 0) {
    sum += num % 10;
    num /= 100;
}
于 2013-07-24T02:03:08.313 回答
4
int num = 12345;
int sum = 0;
int pos = 0;
while(num > 0) {
    int digit = num % 10;    // make it really blatantly clear what the DIGIT is
    if (pos % 2 == 0)
      sum += digit;
    num /= 10;
    pos++;
}

您需要一种检查机制来确保您跳过了一半的数字。[您正在尝试添加数字的数字,而不是数字。编辑。]

这也将解决您的第一个解决方案:

if(i%2 /*not num*/ == 0)
于 2013-07-24T01:59:08.863 回答
1
int num = 12345;
int sum = 0;
String str = String.valueOf(num);
for (int i = str.toCharArray().length - 1, j = 0; i >= 0; i--, j++) {
    if (j % 2 == 0) {
        int number = Character.digit(str.charAt(i), 10);
        sum += number;
    }
}
System.out.println(sum);
于 2013-07-24T02:07:46.230 回答