我正在完成一项学校作业,所以我正在寻找有关我做错的指导。这是一个更大的程序的一部分,但我正在尝试在我实现其余程序之前进行循环。基本上,我的循环假设迭代所有数字,然后添加其他所有数字,例如:
如果输入的数字是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中所有数字的总和。我知道我接近一个解决方案,它介于我的两个代码之间,但我似乎无法做到正确。
答案 0 :(得分:5)
简单地除以100.这将跳过偶数。
int num = 12345;
int sum = 0;
while(num > 0) {
sum += num % 10;
num /= 100;
}
答案 1 :(得分: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)
答案 2 :(得分: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);