Если пишем метод вот так то все работает как надо
public static String checkProtocol(String url) {
if (url.startsWith("https")) {
return "https";
} else if (url.startsWith("http")) {
return "http";
} else {
return "неизвестный";
}
}
но если так:
public static String checkProtocol(String url) {
if (url.startsWith("http")) {
return "http";
}
else if (url.startsWith("https")) {
return "https";
} else {
return "неизвестный";
}
то else if странно выполняется и все https = http, почему так?
GrafNaryshkin
13 уровень
Это магия или что?
Решен
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дархан Байменов
19 июля 2024, 07:33
Искомая строка в последующем if не должна содержаться в предыдущем if.
0
ГоффMaster
17 августа 2023, 00:01
Вдогонку, на всякий случай - в джаве есть класс URL и имеет смысл при работе с урлами использовать его. Кто-то ведь старался, класс и методы класса расписывал))
0
Ivan QA Automation Engineer Expert
8 ноября 2022, 19:59
не согласен с комментами ниже: всё возвращает, как надо (как в условии прописал) -
-2
Artem Fadin
13 октября 2021, 11:42
у них начало одинаковое получается, часть с http есть и у протокола https, поэтому и не проходит по другому, лучше при проверке указывать до символа двоеточия название протокола.
+2
Eric CartmanJava Developer в EY
7 октября 2021, 17:28
Я добавил :// до https и все заработало. if (url.startsWith("https://").
+2
Марк Носырев
29 августа 2021, 18:33
Автору спасибо за вопрос. Сам зашел сюда написать про это наблюдение, чтобы понять что да как.
В итоге еще больше вопросов после ответа. Получается, метод startsWith() проверяет не всё содержимое строки, а только часть?
+1
Anton G.
12 декабря 2023, 17:24
Да, смысл метода startsWith() в том, что он проверяет "НАЧАЛО СТРОКИ".
Т.е. в нашем случае если строка начинается:
1) Мы проверяем что строка начинается с "http"". Ок
2) https начинается с "http"".
3) Выполняется первый пункт)
0
$an4ez
18 августа 2021, 05:39
Никакой магии, просто "https" уже начинаестя с "http" и во втором варианте для все "https.." метод вернет "http"
+2
Кирилл
24 февраля 2022, 17:08
тоесть нужно сначала писать адрес в котором символов больше, я правильно понял? Тоже столкнулся с такой проблемой!
+1
artem_ak_izh
8 сентября 2022, 20:40
Лучше включать в условие проверки текст вплоть до ":", т.е.
0