Так что в основном мне нужно сделать массив, содержащий время, потраченное на изучение. Первой задачей было получить итоги и сохранить их в массиве, который я сделал,
//student number total hours
Student Weekly study
Student0 34
Student1 28
Student2 20
Student3 31
Student4 32
Student5 28
Student6 37
Student7 41
Второе задание состояло в том, чтобы организовать учеников в самые длинные часы.
Сначала я организовал фактические часы, изученные в массиве:
public static void sort(Integer[] array){
Integer studentNumber [] = new Integer[8];
Integer temp[] = new Integer[8];
for (int i = 0; i < array.length;i++){
temp[i] = array[i];//declaring value of index so it doesn't change
}
Arrays.sort(array, Collections.reverseOrder());//sorted the original array in descending order
}
Затем мне нужно было отобразить студента (идентифицируя его по номеру их исходного индекса, например, у student0 есть 34), поэтому я сделал цикл для сравнения двух значений, если это произойдет, тогда он будет использовать индекс из 'temp':
for (int i = 0; i < temp.length;i++){
for (int j = 0; j < array.length;j++){
if (array[i].equals(temp[j] )){
System.out.println("Student" + j + "\t " + array[i]);
break;
}
}
выход: * +1010 *
Student7 41
Student6 37
Student0 34
Student4 32
Student3 31
Student1 28
Student1 28
Student2 20
как вы можете видеть, он показывает student1 дважды, когда он должен показывать, должен показывать 5 после, однако, поскольку они имели одинаковое значение, он ищет первое, что равно ему.
Я искал решения и пытался создать переменную, чтобы проверить, был ли индекс уже посещен:
int pointer =0;
for (int i = 0; i < temp.length;i++){
for (int j = 0; j < array.length;j++){
if (array[i].equals(temp[j] )&& i > pointer){
System.out.println("Student" + j + "\t " + array[i]);
break;
}
}
pointer++;
}
поэтому мой вопрос: есть ли способ проверить / пропустить индекс с повторяющимися значениями, которые уже были посещены