Не пойму какой вариант телефона надо задать, чтобы понять на что ругается валидатор.
package com.javarush.task.task22.task2212;
/*
Проверка номера телефона
*/
public class Solution {
public static boolean checkTelNumber(String telNumber) {
String str1, str2;
int start, end;
//если начинается с +
if (telNumber.substring(0,1).equals("+")){
if (telNumber.contains("(")){//ищем только одну пару скобок
start = telNumber.indexOf("(");
end = telNumber.indexOf(")");
if (start>end) return false; //неправильно расположены: )(
if (end==-1) return false; // нет обратной скобки
if (end==telNumber.length()-1) return false; //последняя не скобка
//проверка на три цифры в скобках
str2 = telNumber.substring(start+1,end);
if (str2.length()!=3) return false;
if (!str2.matches("^\\d\\d\\d$")) return false;
//вырезаем +, (, )
str1 = telNumber.substring(1,start) + telNumber.substring(start+1, end) + telNumber.substring(end+1);
}
else str1 = telNumber.substring(1); //вырезаем только +
if(str1.matches("^\\d{12}$")) return true;
else return false;
}
else{
if (telNumber.contains("(")){//ищем только одну пару скобок
start = telNumber.indexOf("(");
end = telNumber.indexOf(")");
if (start>end) return false; //неправильно расположены: )(
if (end==-1) return false; // нет обратной скобки
if (end==telNumber.length()-1) return false;
//проверка на три цифры в скобках
str2 = telNumber.substring(start+1,end);
if (str2.length()!=3) return false;
if (!str2.matches("^\\d\\d\\d$")) return false;
//вырезаем +, (, )
str1 = telNumber.substring(0,start) + telNumber.substring(start+1, end) + telNumber.substring(end+1);
}
else str1 = telNumber.substring(1); //вырезаем только +
if(str1.matches("^\\d{10}$")) return true;
else return false;
}
}
public static void main(String[] args) {
System.out.println(checkTelNumber("2374995(012)"));
System.out.println(checkTelNumber("+380501234567"));
System.out.println(checkTelNumber("+38(050)123456"));
System.out.println(checkTelNumber("+0501234(567)"));
System.out.println(checkTelNumber("0(501)234567"));
System.out.println(checkTelNumber("+38)050(1234567"));
System.out.println(checkTelNumber("+38(050)123-45-67"));
System.out.println(checkTelNumber("050ххх4567"));
System.out.println(checkTelNumber("050123456"));
System.out.println(checkTelNumber("(0)501234567"));
System.out.println(checkTelNumber("(+12)8540302909"));
System.out.println(checkTelNumber("+(237)499501(234)"));
}
}