JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Товарищи воротилы джава-программирования!!!! Я попробовал...
Карина
12 уровень
  • 30.07.2021
  • 662просмотров
  • 9комментариев

Товарищи воротилы джава-программирования!!!! Я попробовала решить задачу двумя способами (один из которых закомментирован) , но ни один из них не проходит проверку. Объясните, пожалуйста в чем причина?

Вопрос по задаче Обновление пути
Java Syntax,  5 уровень,  7 лекция
Решен


Реализуй метод changePath(String, String) так, чтобы он заменял версию jdk в пути, полученном первым параметром метода, на версию, полученную вторым параметром, и возвращал новый путь.
Версия jdk начинается со строки "jdk" и заканчивается на "/".

Пример:
путь — "/usr/java/jdk1.8/bin/"
версия jdk — "jdk-13"

Метод changePath(путь, версия jdk) должен вернуть путь — "/usr/java/jdk-13/bin/".
Метод main() не принимает участия в тестировании.

Требования:
  • Нужно, чтобы метод changePath(String, String) был реализован согласно условию.
.....
package com.javarush.task.pro.task09.task0914; /* Обновление пути */ public class Solution { public static void main(String[] args) { String path = "/usr/java/jdk1.8/bin"; String jdk13 = "jdk-13"; System.out.println(changePath(path, jdk13)); } public static String changePath(String path, String jdk) { //напишите тут ваш код int index = path.indexOf("jdk1.8"); int index2 = path.lastIndexOf('/'); String one = path.substring(0, index); String two = path.substring(index2); String result = one + jdk + two; return result; //String result = path.replace("jdk1.8", jdk); // return result; } }
0
Комментарии (9)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Роман Пушенко
Уровень 21
9 августа 2021, 12:33
тоже лоханулся с условием, нужно не подгонять решение под пример, а решить задачу что путь может быть любым, главное условие Версия jdk начинается со строки "jdk" и заканчивается на "/". но если путь будет /usr/jdk/java/jdk1.8/bin/tmp то моя программа споткнется, но условия я выполнил и проверка прошла.
0
Карина
Уровень 12
10 августа 2021, 06:25
Роман, но ведь умные люди говорят, что на ошибках учатся. Так что мы не лохи, а хорошие ученики ;-))))
+1
Гофф
Уровень 3
Master
10 августа 2021, 09:29
Советую здесь ознакомится хотя бы поверхностно с регулярными выражениями - тема страшная, но полезная. Наскоком регулярки всё равно не освоить, а вот шаг за шагом можно. Тут прямо задача на регулярки, решается в одну строку:
заменить всё, что начинается с "jdk" и заканчивается на "/" на значение переменной jdk
0
hidden #598481
Уровень 27
30 июля 2021, 08:53
Потому что ты подгоняешь решение под тест, а не под условие. В условии не сказано, что надо заменить версию 1.8. Там сказано, что надо найти в строке версию jdk и заменить ее:
Версия jdk начинается со строки "jdk" и заканчивается на "/"
Что если на вход дана такая строка?
/usr/java/jdk1.6/bin/tmp
Напиши код так, чтобы при замене версии в этой строке на jdk-13 получился результат, соответствующий условию:
/usr/java/jdk-13/bin/tmp
0
Карина
Уровень 12
30 июля 2021, 09:23
Логично..)) Пойду упражняться спасибо!
0
Карина
Уровень 12
31 июля 2021, 06:07
А подскажите, пожалуйста вот код из лекции Scanner console = new Scanner(System.in); String path = console.nextLine(); int index = path.indexOf("//"); int index2 = path.indexOf("/", index + 2); <======= ЧТО ОЗНАЧАЕТ index+2?????????? String first = path.substring(0, index + 2); String last = path.substring(index2); String result = first + "javarush.ru" + last; System.out.println(result);
+1
Карина
Уровень 12
31 июля 2021, 06:09
И почему изпользуется только indexOF(); Почему для поиска второго симврла не взять lastIndexOf()??????
0
hidden #598481
Уровень 27
2 августа 2021, 07:46
Второй аргумент в методе indexOf означает позицию, с которой нужно начинать поиск. Допустим, строка имеет такой вид:
abc/def/ghi/jkl
012345678901234 -- цифры просто для наглядности позиции каждого символа
В этом случае первый вызов path.indexOf("//") вернет нам значение 3, т.е. int index = 3. Соответственно 3 + 2 = 5, то есть во втором вызове path.indexOf("/", index + 2) мы указываем, что следующий слэш нужно искать начиная с 5 символа в строке (чтобы не найти опять тот же самый). И находим его на позиции номер 7, то есть int index2 = 7. lastIndexOf нельзя использовать, т.к. требуется найти именно второй, а он не обязательно будет последним. lastIndexOf на примере моей строки вернет значение 11.
0
Карина
Уровень 12
8 августа 2021, 14:12
Огромное спасибо! Вы очень помогли мне
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush