java - 数组的打印结果很难弄清楚
问题描述
我是这里的 Java 新手。我一直在做这个练习,遇到了一个我正在尝试解决的有趣问题。
我对它如何打印 2,4,4 和 2,4,8 感到困惑。我知道 1 和 2、3、4 是如何工作的。
这是打印结果。
1、2、3、4
1 , 2 , 4 , 4
1 , 2 , 4 , 8
我尝试通过打印它来检查 array[idx] 的工作原理(而不是在代码中),我知道在第一个循环中,array[idx] 将为 4,因为 index[2] 为 3, 3-1 = 2 , 2*2 = 4。
但是,我对第二个循环感到困惑,其中 array[idx] 是 8。我认为 index[3] 是 4、4-1 = 3、3*2 = 6?
这是代码。
public static void main (String[] args){
int[] v = {1,2,3,4};
print(v);
fiddle(v, v[2]-1);
print(v);
fiddle(v, v[3]-1);
print(v);
}
public static void fiddle(int[] array, int idx) {
array[idx] = array[idx - 1] * 2;
}
public static void print(int[] array) {
System.out.println(array[0]);
for (int i = 1; i < array.length; i++){
System.out.println(", " + array[i]);
}
System.out.println();
}
我只想知道 fiddle 和 print 方法如何协同工作以获得 2、4、4 和 2、4、8 的结果。
解决方案
原因是因为每次使用 fiddle 方法都是从数组的前一个状态开始的。在调用 fiddle 之前,您不会将数组重置回其原始状态。
所以在你的第 3 次小提琴调用的情况下,它使用 [1,2,4,4] 其中第 3 个索引 - 1 = 4 * 2 是 8
正如其他人在评论中所说,调试这将为您节省一个问题。但是,由于您是 Java 新手,您可能不知道什么是好的。我建议学习如何在您使用的任何 IDE 中使用调试器。
推荐阅读
- flutter - 依赖项无法在 Codemagic 上安装
- python-3.x - 有没有办法检查 GCS 中是否存在批量文件?
- typescript - 如何删除 Typescript 对象中的未知键
- javascript - 这是正确使用 ajax 和 php - mysql - javascript 吗?
- r - 从 R 中的 XmlNodeList 子集列表
- oracle - 在Oracle中将数字转换为字符串并添加一个字符
- python - 如何在 PyQt 中从 QListWidget 拖放到 QLabel
- lua - esx_kasacters 无法加载 lastChar
- c - PostgreSQL 使用 Bytea 二进制数据和 C libpq 保存和挑选文件
- python - Pandas 中的舍入数字