Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代一个从末尾开始的数字,然后每隔一位数相加_Java - Fatal编程技术网

Java 迭代一个从末尾开始的数字,然后每隔一位数相加

Java 迭代一个从末尾开始的数字,然后每隔一位数相加,java,Java,我正在做一项学校作业,所以我正在寻找关于我做错了什么的指导。这是一个更大的程序的一部分,但在实现程序的其余部分之前,我正在尝试处理循环。基本上,假设我的循环遍历所有数字,然后每隔一个数字添加一次,例如: 如果输入的数字是48625,则返回5+6+4之和。我想我必须将我的循环与if语句结合起来,以迭代每个第n个数字,因此,到目前为止,我得出的结论是: class testLoop{ public static void main (String args[]){ int

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

如果输入的数字是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。它没有按计划添加第n个值

我还尝试了以下方法:

int num = 12345;
int sum = 0;

while(num > 0) {
    sum += num % 10;
    num /= 10;
}
但这也不起作用,它返回了15,这基本上是变量num中所有数字的总和。我知道我接近一个解决方案,它在我的两个代码之间,但我似乎无法正确地得到它

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)

简单地除以100。这将跳过偶数

int num = 12345;
int sum = 0;

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

如果是每隔一个数字,也许可以检查一个标志,该标志在每次迭代中打开和关闭。是否要获得前一个数字和最后一个数字的总和?您选择了错误的答案作为最佳答案。“你甚至不需要一个if块。”吉姆,他的尝试对我来说已经足够接近了。他在for循环实现中的想法是正确的。我做了更多,然后给了他答案,我解释了他为什么需要改变。这不是一个好的答案。如果甚至不需要块。检查用户2468852的答案。@Jean Bernard谢谢。我知道我已经关门了,但我真的不知道为什么它会失败。我知道我的for循环更接近于答案,但不知道为什么它失败了。我使用了数字的剩余部分,而不是告诉它每隔一个去。答案很好,我正在IDE上调试它,以了解到底发生了什么。这是一个更好的答案。
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);