Целое число не сравнивается, когда не равно
У меня есть метод, который рассчитывает следующий лучший результат в массиве студентов, принимая в student
массив и topStudentIndex
в качестве параметров, который рассчитывается другим методом для topStudentIndex
в моей главной.
Ниже мой метод:
public static int calNextHighestOverallStudentIndex(Student[] st, int topStudentIndex) {
double nextHighestOverall= 0;
int secondHighestStudentIndex = 0;
for (int i = 0; i < st.length; i++) {
if ((st[i] != null) && (!(st[i].getStudentIndex() == topStudentIndex))) {
System.out.println(topStudentIndex+ " compare with i = "+i);
double currentOverall= st[i].getOverall();
if (currentOverall> nextHighestOverall) {
nextHighestOverall= currentOverall;
secondHighestStudentIndex = i;
}
}
}
return secondHighestStudentIndex ;
}
Я беру в позиции индекса высшего студента, и проверяет, является ли позиция массива пустой && тот же индекс. Если нет, проверка продолжится.
Однако вывод показывает, что сравнение позиции индекса не работает.
1 compare with i = 0
1 compare with i = 1
1 compare with i = 2
1 compare with i = 3
1 compare with i = 4
1 compare with i = 5
1 compare with i = 6
Я пытался использовать !=
и мой текущий способ проверки, но безрезультатно.
1 ответ
Решение
if ((st[i] != null) && (!(st[i].getStudentIndex() == topStudentIndex))) {
System.out.println(topStudentIndex+ " compare with i = "+i);
Вы сравниваете topStudentIndex
с st[i].getStudentIndex()
но печать i
в заявлении на печать.
Либо сделать
if ((st[i] != null) && (!(i == topStudentIndex)))
или распечатать
System.out.println(topStudentIndex+ " compare with student index = "+ st[i].getStudentIndex());
чтобы понять, почему сравнение не удается.