首页 > 解决方案 > java循环不增加数组索引

问题描述

假设我有一个整数数组int[] A = {0, 1, 2, 0} ,主要方法是

int i = 0, a = A[i], b = A[i + 1];

while(i < 3) {
  System.out.println(a + " " + b + " " + i);
  i++;
}

为什么控制台输出

0 1 0
0 1 1
0 1 2

即使索引已经通过 0 我期望a为 1 和b2

标签: java

解决方案


当这行代码执行时,这些是当时存在的每个变量的(简化)状态。

int i = 0, a = A[i], b = A[i + 1]
---------------------
| A  | {0, 1, 2, 0} |
| i  |  0           |
| a  |  0           |
| b  |  1           |
---------------------

请注意,aand只是数字,而不是对依赖于 值的b数组的任何引用。Ai

当您向下移动到 时i++;,上述变量的唯一变化是| i | 1 |

如果您想在循环内更新ab则需要根据更新后的索引访问数组 A 中的值。您的打印声明的一部分可能看起来像System.out.println(A[i]);


推荐阅读