Всем привет! В IDEA работает, а проверка выдает:
Failed test #1 of 6. Runtime error Exception in thread "main" java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap') at Main.reverse(Main.java:8) at Main.main(Main.java:15)
Задача. Реализуйте метод для обращения заданного массива строк. Массив может иметь любой размер. Метод может обратить и вернуть существующий массив или вернуть новый массив.
import java.util.*;
public class Main {
public static String[] reverse(String... words) {
// write your code here
}
/* Do not change code below */
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] words = scanner.nextLine().split("\\s+");
String[] reversed = reverse(words);
Arrays.stream(reversed).forEach(e -> System.out.print(e + " "));
}
}
Мой код.
public static String[] reverse(String[] words) {
List<String> list = Arrays.asList(words);
Collections.reverse(list);
return (String[]) list.toArray();
Если я правильно понял вашу задачу:
public static String[] reverse(String[] words) {
Collections.reverse(Arrays.asList(words));
return words;
}
Всего лишь нужно было убрать list.toArray()
Ну а если вам интересно почему это работает, то я вам скажу. Дело в том что Arrays.asList() создает представление над массивом, таким образом вызов метода set() на этом списке будет изменять исходный массив.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости