如何在这段代码中出现一个数字三角形?

时间:2018-06-09 10:59:50

标签: java string

我是java的初学者,这个代码用在我正在阅读的书中,但我似乎无法弄清楚它是如何工作的。

代码:

public class NumberTriangleWhile {
    public static void main(String[] args) {
        int number = 0;
        String output = "";

        while (number < 10) {
        output = output + number;
            System.out.println(output);
            number++;
        }
    }
}

输出:

0
01
012
0123
01234
012345
0123456
01234567
012345678
0123456789

我不明白为什么打印每个号码然后以某种方式存储并在下一行重复使用,有人可以解释一下吗?

4 个答案:

答案 0 :(得分:2)

output是一个字符串变量。当你向它添加一些东西时:

output = output + number;

它不会添加number的数值,而只是将数字与原始字符串连接起来。例如,如果output最初为1number2,则上述行会将output更改为12,而非{{1} }}

循环保持循环,直到3为10.在第一次迭代中,number从空字符串更改为output。在第二次迭代中(0现已增加到1),number更改为output(原始01加入当前值0 - 1 )。在第三次迭代中,number递增到2. number然后添加到2的末尾以形成output。这一直持续到数字为10。

您的误解可能是您认为012在打印后变空。 没有。 它仍将保持相同的值。

答案 1 :(得分:1)

while循环内的每个步骤中,output添加了number,在Java中添加String的内容将导致String例如:

String str = "a" + 2;

结果为str="a2";

如果我们开始循环,则在第一步number = 0output=""因此output = "" + 0使output = "0"在第二轮number=1 output = "0"因此(Old output value) + 1制作output = "01"的{​​{1}}等等

答案 2 :(得分:0)

字符串输出在while循环之外定义。它可以从while循环中读取和写入,并且其内容在下一次迭代中将保持一致。

如果输出将在while循环内定义,例如:

while ( number < 10) {
   String output = "";
   output += number;
}

那么你的输出就是(每个数字后面都有新行)     0     1     2     3     4     五     6     7     8     9

由于新数字在while循环的每次迭代中都是一致的,所以它就像你说的那样“存储”了

答案 3 :(得分:0)

每个号码都会被打印出来,因为它会被连接起来。 当number=0时, 并且您将数字的值存储到输出中: Output=output+number 然后,作为整数的数字将作为字符串存储在输出中 每次循环运行时,新增加的数字将与字符串输出中的先前值连接。 这就是每次都打印所有数字的原因。

在您的代码中进行此更改,您将获得输出

public static void main(String[] args)
{
     int number=0;
     String output="";
     while(number <10)
     {
         output=output+number;
         System.out.println(output);
         number++;
         output="";
     }
}