java - 为什么设置变量等于数组索引不能以预期的方式工作?

标签 java arrays

非常相似代码的两个版本...一个有效,另一个无效...

使用的数组:

int[] input = new int[10];  

//

for(int i = 0; i < input.length; i++) {
                //int inputi = input[i];
            for(int j = 0; j < input.length; j++) {
                //int inputj = input[j];
                if(input[i] < input[j]) {
                      input[j] = input[i];
                      min = input[j];
                  }
            }

上面的代码有效。 下面的代码没有,什么给了?

for(int i = 0; i < input.length; i++) {
                int inputi = input[i];
            for(int j = 0; j < input.length; j++) {
                int inputj = input[j];
                if(inputi < inputj) {
                      inputj = inputi;
                      min = inputj;
                  }
            }

它不应该做同样的事情吗? 第一个代码返回最小值,第二个不返回。

对于可能令人困惑的变量名称,我深表歉意,我只选择了这些名称,以便我可以轻松地来回切换。

最佳答案

赋值被破坏:inputj 和 inputi 是临时变量。

                  inputj = inputi;

改变临时变量

                  input[j] = input[i];

实际上改变了数组的值。

只是为了获得最小值:

min = input[0];
for(int i = 1; i < input.length; i++) {
            if(min > input[i]) {
                  min = input[i];
            }
}

关于java - 为什么设置变量等于数组索引不能以预期的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4871198/

相关文章:

javascript - 两个排序的坐标数组之间最近点的索引

javascript - 在 Vue.js 中转换数组数组

java - 将值从第一个 Activity 传递到第三个 Activity 到 ListView 中覆盖旧值

java - 如何随机生成 1 到 50 之间的整数 (java)

c - 如何使用 C 查找二维数组中的连续元素

java - 将 array.xml 中的多个字符串数组合并到一个列表中

arrays - 有什么办法可以将2个数组添加到一个数组中吗?

java - Grid Vaadin - 数据显示在 grid-scroller 下方

java - 如何在Android中制作垂直选择器?

java - Java内部类的两个问题(class A { class B { } })