非常相似代码的两个版本...一个有效,另一个无效...
使用的数组:
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/