您能解释一下它是如何工作的吗?

如果有人可以给我适当的代码解释,那将是非常棒的:)

代码正在工作,我喜欢它,但是,当我学习Java时,需要理解它的每一点。

谢谢!

选中StringBuilder()-看起来不错, 但是loop中的部分内容不太清楚。


    public class SquareDigit {

        public int squareDigits(int n) {
               StringBuilder builder = new StringBuilder();

               while(n > 0) {
                   int digit = n % 10;

                   int square = digit * digit;
                   builder.insert(0,square);

                   n = Math.floorDiv(n,10);
               }

               return Integer.valueOf(builder.toString());
         }

     }

qiu397249612 回答:您能解释一下它是如何工作的吗?

while(n > 0) {

int n大于0时,请执行以下操作。

int digit = n % 10;

新的int digit初始化为n MODULO10。取模返回除法n / 10的余数。因此,例如,如果n为21,它将返回1。

int square = digit * digit;
builder.insert(0,square);

新的int square被初始化为自身digit倍的乘积。来自类insert()的方法StringBuilder以0和square作为参数被调用。 0是偏移量,square是要插入的char值。

n = Math.floorDiv(n,10);

Math.floorDiv()返回小于或等于代数商的最大(最接近正无穷大)整数值。例如,Math.floorDiv(25,5)将返回5

return Integer.valueOf(builder.toString());

最后,您返回之前构建的值。 builder.toString()以字符串形式返回StringBuilder对象。 Integer.valueOf(String str)用于返回保存指定Integer值的String str对象。

,

让我们来n=25。   将值传递给squareDigits(int 25)之后。

1)首先,它创建一个StringBuilder

2)while(n > 0):25> 0为真,因此满足进入循环的条件。

3)int digit = n % 10:n = 5。

4)int square = digit * digit:平方= 25。

5)builder.insert(0,square):将square值的第0个位置插入builder

6)n = Math.floorDiv(n,10);:    Math.floorDiv(int x,int y)返回小于或等于代数商的最大(最接近正无穷大)整数值。 n = 2。

7)用值2重复步骤2。digit变成2,square变成4,builder插入值4,但是已经存在25,所以最新的值4是附加到25。

8)n变成Math.floorDiv(2,10),返回0.2。在检查while条件时,它不满足方程式。

9)builder使用toString()并使用Integer.parseInt()转换为String,它将返回的String值转换为Integer,最终返回425。

本文链接:https://www.f2er.com/3138725.html

大家都在问