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的值。
答案 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的值,并且它的值会递增。