static метод не работает метод в Java
Прочитал пока только 30% книги Head First Java. Не могу понять один момент. В статическом методе main вызываю тоже статический метод sortArray, который получает на вход массив и сортирует его от меньшего к большему.
Так вот несмотря на то, что задаю в аргументе массив, метод в упор не хочет работать. Ему не нравятся типы, и я не могу понять, что не так.
Даем массив, принимаем на вход массив, возвращаем массив... Что же не так ???
public class Main {
public static void main(String[] args) {
sortArray(23, 33, 5);
}
static int[] sortArray (int[] myArr) {
int tmp;
for (int i = 0; i < myArr.length; i++) {
for (int x = i + 1; x < myArr.length; x++) {
if (myArr[x] < myArr[i]) {
tmp = myArr[i];
myArr[i] = myArr[x];
myArr[x] = tmp;
}
}
}
for (int i : myArr) {
System.out.print(i + " ");
}
return myArr;
}
}
Сообщение об ошибке
Ответы (1 шт):
Чтобы отработал существующий код без изменений в методе main, можно определить метод sortArray, как принимающий последовательность целых чисел переменной длины (vararg) int ... arr, а не массив int[] arr:
static int[] sortArray(int ... myArr) {
// ...
}
public static void main(String ... args) {
int[] sorted = sortArray(23, 33, 5);
System.out.println(Arrays.toString(sorted)); // -> 5 23 33 [5, 23, 33]
}
Следует отметить, что при таком определении метода sortArray корректно будут обработаны оба варианта вызовов:
sortArray(14, 8, 27); // 8 14 27
System.out.println("\n---"); // ---
sortArray(new int[] {14, 8, 27}); // 8 14 27
Или же можно изменить вызов sortArray в методе main, чтобы правильно передать массив, а не последовательность произвольной длины:
public static void main(String ... args) {
sortArray(new int[] {23, 33, 5}); // -> 5 23 33
}
