包含 if 语句的 for 循环不会再次循环
For loop containing if statements does not loop again
下面的方法接收 student
数组和 topStudentIndex
之前用另一种方法计算的值。
我的数组中有多个对象。但是for循环只循环了一次,直接返回了第一个值
我不知道为什么 for 循环停止了,即使我的 st.length
超过了
public static int computeNextHighestOverallStudentIndex(Student[] st, int topStudentIndex) {
double nextHighestOverall= 0;
int nextHighestStudentIndex = 0;
for (int i = 0; i < st.length; i++) {
if ((st[i] != null) && (!(i == topStudentIndex))){
double studentOverall = st[nextHighestStudentIndex ].getOverall();
if (studentOverall > nextHighestOverall) {
nextHighestOverall= studentOverall;
nextHighestStudentIndex = i;
}
}
}
return nextHighestStudentIndex ;
}
看起来像
double studentOverall = st[nextHighestStudentIndex ].getOverall();
应该是
double studentOverall = st[i].getOverall();
因为您想检查数组中的所有学生,而不仅仅是第一个学生(st[nextHighestStudentIndex ]
将始终 return 第一个学生,因为您将 nextHighestStudentIndex
初始化为 0) .
您想使用 st[i](而不是 st[nextHighestStudentIndex])遍历整个数组
下面的方法接收 student
数组和 topStudentIndex
之前用另一种方法计算的值。
我的数组中有多个对象。但是for循环只循环了一次,直接返回了第一个值
我不知道为什么 for 循环停止了,即使我的 st.length
超过了
public static int computeNextHighestOverallStudentIndex(Student[] st, int topStudentIndex) {
double nextHighestOverall= 0;
int nextHighestStudentIndex = 0;
for (int i = 0; i < st.length; i++) {
if ((st[i] != null) && (!(i == topStudentIndex))){
double studentOverall = st[nextHighestStudentIndex ].getOverall();
if (studentOverall > nextHighestOverall) {
nextHighestOverall= studentOverall;
nextHighestStudentIndex = i;
}
}
}
return nextHighestStudentIndex ;
}
看起来像
double studentOverall = st[nextHighestStudentIndex ].getOverall();
应该是
double studentOverall = st[i].getOverall();
因为您想检查数组中的所有学生,而不仅仅是第一个学生(st[nextHighestStudentIndex ]
将始终 return 第一个学生,因为您将 nextHighestStudentIndex
初始化为 0) .
您想使用 st[i](而不是 st[nextHighestStudentIndex])遍历整个数组