Все относительно

  • 16
  • Недоступна
Напиши программу, которая будет считывать с клавиатуры два пути и выводить в консоль относительный путь между первым и вторым путями, если он существует. В противном случае выводить ничего не нужно.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (107)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей Федоров
Уровень 17, Ukraine
21 сентября, 12:40
ОБЯЗАТЕЛЬНО оберните в try , а вот catch должен быть пустым.
Pfile
Уровень 22, Russian Federation
18 сентября, 20:26
27 попыток пока я не угадал что в абсолютный путь не нужно преобразовывать
NatalliaAndrukhovich
Уровень 16, Italy
13 сентября, 22:32
не понимаю, почему нельзя обойтись if-else чтобы через equals сравнить корни путей, и, если корни одинаковые, то сравнить пути и результат вывести в консоль. А если корни разные, то else оставить пустым и ничего не выводить. почему так нельзя?(валидатор ругается)
Anonymous #2955428
Уровень 25, Санкт-Петербург, Russian Federation
5 сентября, 08:34
Пол часа мучался почему IDEA не принимает решение, переписал три раза весь код по разному, в итоге самый первый попробовал в валидаторе на сайте и все прошло
Anonymous #2308807
Уровень 16
10 августа, 16:55
В условии указано мы вычисляем между 1 и 2. По логике это Path.of(str2).relativize(Path.of(str1)) (из первого вычитаем второй, и то что осталось - это относительный путь) а правильное решение Path.of(str1).relativize(Path.of(str2)) плюс обязательно использовать try catch без которого решение не принимается, о чем в условии вообще ничего не сказано. в итоге если пути нет, то выводится .. либо ..\\.. и при этом решение принято. Ну как так то? где логика? по логике нужно вычесть из первого второй Path.of(str2).relativize(Path.of(str1)) и вывести его если первый путь начинается со второго (Path.of(str1).startsWith(Path.of(str2))==true) но такое решение не верное!!!
Тарас Ш.
Уровень 32, Ульяновск, Россия
24 августа, 13:12
Кто тебе сказал, что relativize() - это вычитание? Это вычисление относительного пути у вызывающего объекта (path1.relativize()), а в качестве "шаблона" (или "корня"), мы передаём второй объект (path1.relativize(path2)). Например: path1 - C:\\Program Files\\Games\\ path2 - C:\\Program Files\\ path1.relativize(path2) - Games\\ (потому, что относительно второй переменной, первая выглядит именно так) Пример второй: path1 - C:\\Program Files\\Games\\ path2 - C:\\Program Files\\Games\\AOE2\\bin\\ path1.relativize(path2) - ..\\.. (потому что две точки, как говорилось в лекции, обозначают переход на уровень вверх. Проще говоря path1 относительно path2 находится на 2 уровня выше) По поводу try-catch. В условии сказано: "...В противном случае выводить ничего не нужно." А из лекции известно, что в этом самом противном случае возникнет IllegalArgumentException, и если мы его не перехватим, в консоль выведется исключение. А это противоречит условию
aleksdenni
Уровень 9, Полтава, Ukraine
18 сентября, 15:40
Старались, писали, но работать будет в точности наоборот 😸Человек всё правильно написал выше. Я наприклад зробив перевірки path , щоб отримати відносний шлях при будь якій послідовності введення коректних даних. Але такий варіант не пройшов. Запропоноване рішення виглядає сумнівно.
Tomhetted
Уровень 23, Санкт-Петербург , Россия
31 июля, 20:04
Почему без трай-кэтч валидатор не пропускает?
Dregid
Уровень 26, Омск, Russian Federation
21 августа, 06:01
Тебе нужно ничего не выводить если ты вдруг пишешь разные корневые директории. А без "трай-кэтч" у тебя будет вылезать ошибка, из за чего ты условие задачи не выполняешь ...В противном случае выводить ничего не нужно.
Almazovich
Уровень 32, Казань, Russian Federation
7 июля, 06:26
Главное чтобы ничего не выводилось если ответ не абсолютный путь(!). Просто catch оставьте пустым.
Богдан
Уровень 18, Россия
3 июля, 13:25
Даже после переписанного правильного решения валидатор не пропускал. А знаете, почему? - В блоке catch было написано
throw new RuntimeException(e);
Что за проверка такая, смысл брать в try-catch и не описывать сценарий обработки...
SWK
Уровень 26
28 июня, 10:45
Почему всегда выдаёт ответ ../c:\test\test.txt ? Что так
c:\
c:\test\test.txt
что так
c:\a\s\d\f\g\h\
c:\test\test.txt
Только если первую строчку пустую сделать, будет c:\test\test.txt
Anonymous #3022337
Уровень 30, Russian Federation
3 июня, 12:29
"Вы решили задачу лучше, чем 73% учеников." - что это значит и как это высчитывается? Вроде от попыток не зависит, иногда вообще 3% пишет)
Billy_izo
Уровень 35, Odesa, Ukraine
14 июля, 05:38
я думал что это чисто от попыток зависит 🤨🤨
В`ячеслав Чудновський
Уровень 20, Germany
17 июля, 16:09
где это показывается?
Billy_izo
Уровень 35, Odesa, Ukraine
18 июля, 15:03