Java - 如何将整数拆分成单个数字然后对每个数字进行平方?

时间:2016-05-08 05:52:54

标签: java

所以,我想将一个整数分成数字,然后将每个数字提升到幂2并打印出来,但这就是我所拥有的:

int n = 666;
String number = String.valueOf(n);
for (int i = 0; i < number.length(); i++) {
    int j = Character.digit(number.charAt(i), 10);
    Math.pow(j, 2);
    System.out.println(j);
}

输出只是666个数字。

我做错了什么?

4 个答案:

答案 0 :(得分:4)

Math.pow(j, 2)没有修改j,它会返回一个新值。您应该将Math.pow的输出捕获到变量并打印

答案 1 :(得分:1)

int m = n;
while (m > 0)
{
    int digit = m % 10;
    System.out.printf("%d\n", Math.pow(digit, 2));
    m /= 10;
}

这是你想要的吗?

由于安德烈亚斯评论称订单相反,我更改了代码:

int length = number.length();
for (int i = length - 1; i >= 0; i--)
{
    int divisor = (int) Math.pow(10, i);
    int digit = n % divisor;
    System.out.printf("%d\n", Math.pow(digit, 2));
}

我也可以把它写成:

int length = number.length();
int divisor = (int) Math.pow(10, length - 1);
while (divisor > 0)
{
    int digit = n % divisor;
    System.out.printf("%d\n", Math.pow(digit, 2));
    divisor /= 10;
}

答案 2 :(得分:1)

如果您想打印单个数字的平方。

int num = 666;
String number = String.valueOf(num);
for (int i = 0; i < number.length(); i++) {
    int j = Character.digit(number.charAt(i), 10);
    int res = (int) Math.pow((double) j, (double) 2);
    System.out.println("digit: " + res);
}

答案 3 :(得分:0)

您的代码无效,因为您实际上并未使用Math.pow()的返回值。

Math.pow(x, 2)是将数字提升到2的幂的一种方法,但它是浮点数学,而不是整数数学。 2的幂意味着将数字乘以它,因此x * x要好得多。

int number = 299792458; // Speed of light in m/s
for (char ch : Integer.toString(number).toCharArray()) {
    int digit = ch - '0';
    System.out.println(digit * digit);
}

或使用Java 8流:

int number = 299792458; // Speed of light in m/s
Integer.toString(number)
       .chars()
       .map(c -> (c - '0') * (c - '0'))
       .forEach(System.out::println);

<强>输出

4
81
81
49
81
4
16
25
64