It still not pass the verification. I may have overlooked something but I'm pretty sure I tested all the conditions that are EXPLICITELY written... Can someone help me? I hate leaving undone tasks like that.
package com.codegym.task.task22.task2212;
/*
Phone number verification
*/
public class Solution {
public static boolean checkPhoneNumber(String phoneNumber) {
String number = phoneNumber;
String justNumber = number.replaceAll("[\\D]", "");
boolean tiretFirst = false;
boolean parenthesesFirst = false;
boolean containsLetters = false;
boolean lastCharIsNumber = false;
boolean threeDigitsPar = number.matches(".*?\\(\\d{3}\\).*?$");
boolean parDfirst = false;
boolean finishDigit = number.matches(".*\\d");
int count = 0;
int countParG = 0;
int countParD = 0;
for (int i = 0; i < number.length(); i++) {
if(Character.isLetter(number.charAt(i))) {
containsLetters = true;
}
if (Character.isDigit(number.charAt(i))){
lastCharIsNumber = true;
}
if (number.charAt(i) == '-') {
if (!parenthesesFirst) {
tiretFirst = true;
}
count++;
}
if (number.charAt(i) == '(') {
countParG++;
}
if(number.charAt(i) == ')') {
countParD++;
if (countParG != countParD) {
parDfirst = true;
}
if (!tiretFirst) {
parenthesesFirst = true;
}
}
}
boolean doubleParenOk = false;
if (countParD == 1 && countParG == 1 || countParD == 0 && countParG == 0) {
doubleParenOk = true;
}
if (number.charAt(0) == '+') {
if (justNumber.length() != 12 || count > 2 || !finishDigit || number.contains("--") || number.contains("---") || !doubleParenOk || containsLetters || !lastCharIsNumber || !threeDigitsPar || tiretFirst) {
return false;
}
else return true;
}
else {
if (justNumber.length() != 10 || count > 2 || !finishDigit || number.contains("--") || number.contains("---") || !doubleParenOk || containsLetters || !lastCharIsNumber || !threeDigitsPar || tiretFirst) {
return false;
}
else return true;
}
}
public static void main(String[] args) {
System.out.println(checkPhoneNumber("050(123)-4567-"));
}
}