#java #arrays #junit
#java #массивы #junit
Вопрос:
int[] bestTime = {50, 73, 72, 75, 71, 56, 61, 60, 62, 68, 70, 50, 70};
предположим, что если n = 6, ожидаемый возврат = {50, 50, 56, 60, 61, 62}
это то, что у меня есть до сих пор, я знаю, что есть много ошибок. любые предложения приветствуются.
public static int[] bestRun(int n) {
int[] best = bestTime[0];
for(int i = 0; i <= bestTime.length; i ) {
if(bestTime[i] <= best) {
best = bestTime[i];
best ;
} return best;
}
if(best.length == n) {
return best;
}
return null;
}
Ответ №1:
Создайте IntStream вашего bestTime
массива, отсортируйте их, ограничьте использование n
, преобразуйте в массив и верните:
public static int[] bestRun(int n) {
return IntStream.of(bestTime).sorted().limit(n).toArray();
}
Вы можете выполнить задачу также с помощью классических циклов for . Но тогда вам нужно реализовать сортировку самостоятельно. Что-то вроде приведенного ниже должно дать вам представление о том, как это можно выполнить:
static int[] bestTime = {50, 73, 72, 75, 71, 56, 61, 60, 62, 68, 70, 50, 70};
public static void main(String args[]) throws IOException{
int[] best = bestRun(6);
System.out.println(Arrays.toString(best));
}
public static int[] bestRun(int n) {
//copy your bestTime array
int[] copy = new int[bestTime.length];
for(int i = 0; i < copy.length; i ){
copy[i] = bestTime[i];
}
//sort copy
for (int i = 0; i < copy.length; i ) {
for (int j = i 1; j < copy.length; j ) {
int temp = 0;
if(copy[i] > copy[j]) {
temp = copy[i];
copy[i] = copy[j];
copy[j] = temp;
}
}
}
//fill your result array
int[] result = new int[n];
for(int i = 0; i < n; i ){
result[i] = copy[i];
}
return resu<
}
Комментарии:
1. Можно ли решить эту проблему без импорта IntStream ?
2. например, используя циклы for и не импортируя никаких библиотек Java