java - 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 和b
2
解决方案
当这行代码执行时,这些是当时存在的每个变量的(简化)状态。
int i = 0, a = A[i], b = A[i + 1]
---------------------
| A | {0, 1, 2, 0} |
| i | 0 |
| a | 0 |
| b | 1 |
---------------------
请注意,a
and只是数字,而不是对依赖于 值的b
数组的任何引用。A
i
当您向下移动到 时i++;
,上述变量的唯一变化是| i | 1 |
如果您想在循环内更新a
,b
则需要根据更新后的索引访问数组 A 中的值。您的打印声明的一部分可能看起来像System.out.println(A[i]);
推荐阅读
- flutter - DartPad:如果控制台只打印“脚本错误”,如何获取更多信息?
- sqlite - SQLite 每日计算的产品交易总和
- javascript - JavaScript 中的语句 vs 表达式 vs 赋值
- javascript - 嵌套javascript对象的编码路径
- java - Java:索引 0 超出长度 0 的范围
- javascript - 如何检查变量内容是否更改
- flutter - 如何在 Firestore 中更新此内容?
- python - SQLAlchemy 错误绑定参数 2 - 可能不受支持的类型
- python - 2D数组和3D数组的乘法
- unity3d - 如何在 Unity 中向 4 名玩家发牌?