对于循环跟踪问题:无法对齐输出

时间:2017-02-18 23:02:22

标签: java loops for-loop

我无法跟踪某些代码以获取输出:

int[] a = new int[5];
for (int i = 0; i < a.length; i++)
{
    a[i] = i*3-1;
}


for (int i = a.length-1; i >= 0; i--)
{
    System.out.print(a[i] + " " );
}

输出:

11 8 5 2 -1

我不明白为什么第二个变量&#39; i&#39;从第一个For循环中被放回到公式中。有人可以帮我连接这两个循环吗?数组是在第一个循环中定义的,为什么它会影响第二个循环呢?我不理解这种关系,也许我只是错过了它。

3 个答案:

答案 0 :(得分:0)

for (int i = 0; i < a.length; i++) {
  a[i] = i*3-1;
}

在第一个循环(上图)中,i是循环的增量,我假设您理解。知道这一点,我们知道整个循环中i的值将为0, 1, 2, 3, and 4

对于陈述a[i] = i * 3 - 1,它有两个目的。

  1. 一个索引值,用于授予访问权限以修改a数组中的值。
  2. 使用i的递增值计算新的整数。
  3. 例如,在第一次迭代中,i将为0。因此,循环内部的代码会将数组位置0的值设置为0 * 3 - 1-1。这将继续循环的剩余部分,解释第二个循环在反向打印时打印的值。

答案 1 :(得分:0)

  

我不明白为什么第二个变量&#39; i&#39;正在从第一个For循环中回到公式中。

i只是变量的名称。变量i在计算值时并不重要,它仅用作循环计数器。您可以在任何j循环中使用for或任何其他名称,但仍会获得相同的输出。

  

有人可以帮我连接这两个循环吗?该数组定义于   第一个循环,为什么它影响第二个?

在第一个循环中使用值填充数组。但请注意,数组最初是在程序开头声明的。

int[] a = new int[5];

这意味着阵列的范围不仅限于第一个for循环。它可以在其范围内的任何地方访问。

因此,在第一个for循环中,我们使用值填充数组。在第二个for循环中,我们正在显示它。

答案 2 :(得分:0)

'i'的范围在循环内,所以一旦循环结束,变量'i'就不再存在并且可以重新实例化。要理解这段代码:

public class Example{
    public static void main(String args[]){
        while(isTrue){
           int x += 3; // Int x exists here
        }
        //x does not exist here it is outside of scope so we can make another
        int x = 10;
    }
}

Var Scope