整数方形数字

时间:2016-07-07 12:09:04

标签: java square

应该有一个程序,它对整数的每个数字进行平方,然后将这些临时数连接成一个新的整数。 我编写了一个代码,它可以解决我的测试用例,但是自动化测试程序会为一些随机生成的输入数字提供错误。

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;
  }
}

2 个答案:

答案 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"