有人可以澄清下面的java代码吗?

时间:2016-12-24 07:06:42

标签: java

package cert216;

class example216
{
    public static void main(String args[]){

    int arr[]={1,2,3};

    for(int var : arr)
    {
        int i = 1;

        while(i<=var)
        {
            System.out.println(i++);
            //System.out.println(i+"inside while");
        }
        //System.out.println(i+"outside while");
    }
}

有人可以澄清为什么输出会出现

1
2
1
2
3

var迭代时的值是多少?是从0开始,它是arr的起始位置还是从1开始,它是arr的值。

3 个答案:

答案 0 :(得分:0)

只需从for循环中声明变量'var',您就可以获得所需的输出。  你得到了意想不到的输出,因为每次var都从数组中获取元素,它被初始化为1。  每次迭代的变量var从数组中获取元素,即在iteartion-1期间它取1然后2,依此类推,数组的起始位置为0,该位置的值为1,因此var在第一次迭代期间将包含1。两者都是一样的。

答案 1 :(得分:0)

分析如下。

iter 1:

for(int var : arr)  //var =3,
{
  int i=1;
  while(i<=var)    //1<=3, 2<=3, 3<=3
  {
    System.out.println(i++); //prints 1, 2 and 3
  }
}

iter 2:

{{1}}

iter3:

{{1}}

答案 2 :(得分:0)

对于您指定的所有结果都是错误的 确切的结果是1 1 2 1 2 3 在运行第一个外循环时 i = 1和var = 1的值,并且条件(i <= var)满足它将进入内循环并打印1然后i增加现在i = 2现在条件(2 <= 1)进入内循环是false所以内部循环不会被执行

运行第二个外循环时

i = 1和var = 2的值,并且条件(i <= var)满足它将进入内循环并打印1然后i增加现在i = 2现在条件(2 <= 2)进入内循环是打印为真,2打印,i现在增加i = 3条件(3 <= 2)进入内循环为假 所以内部循环不会被执行。

运行第三个外循环时

i = 1和var = 3的条件和条件(i <= var)满足它将进入内循环并打印1然后i增加现在i = 2现在条件(2 <= 3)进入内循环是打印为真,2打印,i现在递增i = 3条件(3 <= 3)进入内循环为真且打印3,i现在递增i = 4条件(4 <= 3)进入内部循环是假的 所以内部循环不会被执行。 结果将是1 1 2 1 2 3

i ++表示使用然后更改,因此它将打印i的值,并且它的值会递增。