所以,我想将一个整数分成数字,然后将每个数字提升到幂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
个数字。
我做错了什么?
答案 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