应该有一个程序,它对整数的每个数字进行平方,然后将这些临时数连接成一个新的整数。 我编写了一个代码,它可以解决我的测试用例,但是自动化测试程序会为一些随机生成的输入数字提供错误。
public class SquareDigit {
public int squareDigits(int n) {
int tmp = 0;
String returnvalue="";
while(n > 0) {
tmp = n % 10;
tmp = tmp * tmp;
returnvalue = returnvalue + Integer.toString(tmp);
n /= 10;
}
int result=Integer.parseInt(returnvalue);
return result;
}
}
答案 0 :(得分:2)
使用BigInteger。
BigInteger
是一个包含任意精度的整数的类:
不可变的任意精度整数。
当您将数字调整到C:\TestScripts>python web_handler.py
the queue is empty. will sleep 20 seconds:0...Enqueue new Job: JobID:2,queue size:1
Enqueue new Job: JobID:2,queue size:2
Enqueue new Job: JobID:2,queue size:3
---------got job:2
======================I am a task================
---------got job:2
======================I am a task================
---------got job:2
======================I am a task================
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
the queue is empty. will sleep 20 seconds:0...
类型的最大可用范围时,您的代码会出错。如果您测试int
范围内的范围,long
可以解决问题。 long
适用于任何整数。
代码应该类似于:
BigInteger
答案 1 :(得分:1)
使用
returnvalue = Integer.toString(tmp) + returnvalue;
而不是
returnvalue = returnvalue + Integer.toString(tmp);
您从后到前迭代数字,例如输入123
中间结果应为
"9"
"49"
"149"
但是在你的代码中它是
"9"
"94"
"941"