循环访问数字中的每个数字

2022-09-01 22:19:15

我正在尝试创建一个程序,该程序将告诉它的数字是否是“快乐数字”。找到一个快乐的数字需要对数字中的每个数字进行平方,并将每个数字的平方结果相加。

在Python中,你可以使用这样的东西:

SQUARE[d] for d in str(n)

但是我找不到如何在Java中迭代数字中的每个数字。正如你所知道的,我是新手,在Java文档中找不到答案。


答案 1

可以使用模 10 运算获取最右边的数字,然后将该数字除以 10 得到下一个数字。

long addSquaresOfDigits(int number) {
    long result = 0;
    int tmp = 0;
    while(number > 0) {
        tmp = number % 10;
        result += tmp * tmp;
        number /= 10;
    }
    return result;
}

你也可以把它放在一个字符串中,把它变成一个char数组,然后循环访问它,做一些类似的事情。Math.pow(charArray[i] - '0', 2.0);


答案 2

假设数字是一个整数,则开头为:

int num = 56;
String strNum = "" + num;
int strLength = strNum.length();
int sum = 0;

for (int i = 0; i < strLength; ++i) {
  int digit = Integer.parseInt(strNum.charAt(i));
  sum += (digit * digit);
}