Привет. Пытаясь обойти ошибку о том, что swtich (url) ожидает тип String, а не тип boolean, я сталкиваюсь с ошибкой, что требуется constant string. Есть ли какой-то самый оптимальный способ обойти эту ошибку, не прибегая к использованию if-конструкций?
public static String checkProtocol(String url) {
//напишите тут ваш код
String http = String.valueOf(url.startsWith("http"));
String https = String.valueOf(url.startsWith("https"));
switch (url) {
case http :
return http;
case https :
return https;
default:
return "неизвестный";
}
}
package com.javarush.task.pro.task09.task0912;
/*
Проверка URL-адреса
*/
public class Solution {
public static void main(String[] args) {
String[] urls = {"https://javarush.ru", "https://google.com", "http://wikipedia.org", "facebook.com", "https://instagram", "codegym.cc"};
for (String url : urls) {
String protocol = checkProtocol(url);
String domain = checkDomain(url);
System.out.println("У URL-адреса - " + url + ", сетевой протокол - " + protocol + ", домен - " + domain);
}
}
public static String checkProtocol(String url) {
//напишите тут ваш код
String http = String.valueOf(url.startsWith("http"));
String https = String.valueOf(url.startsWith("https"));
switch (url) {
case http :
return http;
case https :
return https;
default:
return "неизвестный";
}
}
public static String checkDomain(String url) {
//напишите тут ваш код
switch (url) {
case url.endsWith(".ru"):
return url = ".ru";
case url.endsWith(".com"):
return url = ".com";
case url.endsWith(".org"):
return url = ".org";
case url.endsWith(".net"):
return url = ".net";
default:
return "неизвестный";
}
}
}
А для твоей простой и кривой реализации можно было тупо сплитом через ":" и выбрать первый кусок, а дальше по нему свичом, если "http" - то "http", "https" - "https", defauilt - "unknown"