Добрый.
Задачу решил.
Не понял - почему не прошло такое решение:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
Path path1 = Path.of(str1);
Path path2 = Path.of(str2);
if(path1.toAbsolutePath().getRoot().equals(path2.toAbsolutePath().getRoot()))
System.out.println(path1.relativize(path2));
}
Достроил оба пути до абсолютных и сравнил их корневые директории.
Причём...!
При валидации 2-е условие прошло.
Не прошло 3-е условие.
Александр
24 уровень
Почему не проходит такое решение? (3-е условие)
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
K.
24 января 2022, 11:46
В лекции написано, что метод relativize() может выкинуть IllegalArgumentException. Возможно, ответ не проходил из-за того, что это никак не учтено в коде
0
Александр
25 января 2022, 07:40
try { if(path1.toAbsolutePath().getRoot().equals(path2.toAbsolutePath().getRoot()))
System.out.println(path1.relativize(path2));
} catch (IllegalArgumentException e) {
}
Не проходит.
Условие 2 : Программа должна выводить в консоли относительный путь между введенными путями, если он существует. - ВЫПОЛНЕНО;
Условие 3: Для вычисления относительного пути должен быть использован метод relativize() класса Path. - НЕ ВЫПОЛНЕНО;
0
Алексей Погонин
23 января 2022, 15:11
Не знаю условий задачи, но предполагаю что нужно достроить путь. Вот инофрмация с Oracle:
For example, on UNIX, if this path is "/a/b" and the given path is "/a/b/c/d" then the resulting relative path would be "c/d".
Возможно нужно обработать еще вариант, проверьте условие.
path2.relativize(path1));
0
Александр
24 января 2022, 08:36
Напиши программу, которая будет считывать с клавиатуры два пути и выводить в консоль относительный путь между первым и вторым путями, если он существует. В противном случае выводить ничего не нужно.
Requirements:
1. Программа должна считать из консоли два пути.
2. Программа должна выводить в консоли относительный путь между введенными путями, если он существует.
3. Для вычисления относительного пути должен быть использован метод relativize() класса Path.
4. Не используй следующие классы: File, FileInputStream, FileOutputStream, FileReader, FileWriter пакета java.io.
0
Александр
24 января 2022, 08:37
Согласно Валидации:
2-е условие выполнено: Программа должна выводить в консоли относительный путь между введенными путями, если он существует.
3-е условие не выполнено: Для вычисления относительного пути должен быть использован метод relativize() класса Path.
Почему...?
0
Алексей Погонин
24 января 2022, 19:43
допустим первый путь C:/Windows/System32/, а второй C:/Windows/ или первый путь C:/Program Files, а второй C:/Windows/System32/. В таком случае корневые директории равны, но относительного пути не существует. Точнее вывод в консоль будет:
По идее первые х(длинна первого пути) символов у обоих путей должны быть равны. Но второй путь должен быть длиннее. НО МОГУ ОШИБАТЬСЯ 0
Александр
25 января 2022, 07:49
Думаю, что ошибка какая-то при Валидации.
2-е условие: Программа должна выводить в консоли относительный путь между введенными путями, если он существует. - ВЫПОЛНЕНО;
3-е условие не выполнено: Для вычисления относительного пути должен быть использован метод relativize() класса Path. - НЕ ВЫПОЛНЕНО;
В правильном решении для выполнения 2-го условия применяетсz try-catch(IllegalArgumentException);
Но дело ведь не во втором условии - оно проходит.
Дело в 3-м условии - применение метода relativize() класса Path; (который применяется во всех вариантах);
Карочи - думаю, что ошибка в валидации.
0