Почему когда я написал boolean и задал ему условие при котором верно будет или 1 , или 2 , или ничего, когда вводится protocol все мои переменные которые сравнивают начало URL-адреса все они принимают значение true (все проблемы происходят только со "startsWith")
(16 и 17 строчка)
import java.util.*;
class OSNOVA {
public static void main(String[] args) {
String[] urls = {"https://javarush.com", "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 str = " ";
boolean a = url.startsWith("https");
boolean aa = url.startsWith("http");
boolean b = a == false & aa == false;
if(a == true | aa == true) {
if (a == true) {
str = "https";
}
else {
str = "http";
}
} else if (b) {
str = "неизвестный";
}
return str;
}
public static String checkDomain(String url) {
String str = " " ;
boolean a = url.endsWith("org");
boolean aa = url.endsWith("com");
boolean aaa = url.endsWith("ru");
boolean aaaa = url.endsWith("net");
boolean b = a==false & aa == false & aaa==false & aaaa==false;
boolean bb = a==true | aa == true | aaa==true | aaaa==true;
if (bb==true) {
if (a==true)
str = "org";
else if (aa == true) {
str = "com";
} else if (aaa==true) {
str = "ru";
}
else if(aaaa==true){
str="net";
}
}
else
str ="неизвестный";
return str;
}
}
Я захотел посмотреть на то как себя будут вести переменные типа boolean но уже в другом коде , в итоге он там так же принимает только значения true и делает не правильный вывод на экран
(7 и 8 строчка)
import java.util.*;
public class OSNOVA1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
String strs = " " ;
boolean a = str.startsWith("a");
boolean aa = str.startsWith("aa");
boolean aaa = a == true | aa==true;
if (aaa){
if (a==true){
strs = str;
System.out.println(strs);
} else if (aa==true) {
strs = str;
System.out.println("Вторая попытка "+strs);
}
}
else
System.out.println("вы не угадали ");
}
}
Можете пожалуйста объяснить почему так происходит или сказать может где допущена ошибка в коде из-за которой происходят эти ошибки
Метод использовался с 5 лекции 10 уровня - вот вид который показали boolean startsWith(String prefix)