我目前正在使用exercise练习数组。
我看了一下给定练习的解决方案,我不太了解那里发生的事情。
有人可以一步一步向我解释这个吗?
public class GettingIndexOfAnArray {
public static int findIndex(int[] my_array, int t) {
if (my_array == null) return -1;
int len = my_array.length;
int i = 0;
while (i < len) {
if (my_array[i] == t) return i;
else i = i + 1;
}
return -1;
}
public static void main(String[] args) {
int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49};
System.out.println("Index position of 25 is: " +
findIndex(my_array, 25));
System.out.println("Index position of 77 is: " +
findIndex(my_array, 77));
}
}
答案 0 :(得分:1)
该方法从数组的开始到结束搜索数组,直到找到元素。
让我们仔细看看这个方法:
public static int findIndex(int[] my_array, int t) {
if (my_array == null) {
return -1;
}
int len = my_array.length;
int i = 0;
while (i < len) {
if (my_array[i] == t) {
return i;
} else {
i = i + 1;
}
}
return -1;
}
该方法接受两个参数,数组my_array
和要搜索t
的元素。
如果传递的数组是null
:
if (my_array == null) {
return -1;
}
返回-1
表示“找不到元素”。
接下来,该方法设置一个应该从开始到结束迭代的循环:
int len = my_array.length;
int i = 0;
while (i < len) {
...
i = i + 1;
}
在循环内部,该方法根据给定值检查当前索引处的数组值:
if (my_array[i] == t) {
return i;
}
如果值匹配,则找到元素并返回当前索引i
。
如果不是,则循环继续迭代。如果循环结束,则无法找到该值,因为已检查所有元素。因此,该方法最后返回-1
。
在Java变量名中应使用 camelCase 而不使用下划线,因此myArray
将是一个更好的名称。名称本身也可以改进,values
。
方法本身可以更容易阅读:
public static int findIndex(int[] values, int valueToSearch) {
// No values to search through
if (values == null || values.length == 0) {
return -1;
}
// Iterate all values
for (int i = 0; i < values.length; i++) {
if (values[i] == valueToSearch) {
return i;
}
}
// All values were iterated, value was not found
return -1;
}
答案 1 :(得分:0)
您传入array
和值以查找(t
)到findIndex()
首先检查null
,如果null
然后将len
设置为array
然后它从array
在每次迭代中,它会检查t
(t
的位置是否为您要查找的值)与array
中的位置匹配(第一次迭代为0) ,array
)的第一个元素
如果匹配,则返回array
它会一直迭代直到匹配,或者如果它没有,它会返回-1(再次,-1找不到)。