2014-06-08 5 views
-2

Java로 전자 메일 유효성 검사와 관련하여 질문이 있습니다. 나는 그것을 사용하는 올바른 방법은 정규 표현식과 패턴에 의한 것이라는 것을 알고 있지만, 어떤 이유로 나는 루프를 사용하여 그것을 작성하도록 요청 받았다. 즉, for 루프를 사용하여 전자 메일을 확인해야합니다. 패턴을 사용하여 요구 사항에 쉽게 도달 할 수 있지만 루프와 관련하여 다소 혼란 스럽습니다.루프를 사용한 전자 메일 유효성 검사

전자 메일은 @ 앞에 적어도 하나의 문자가 있어야하고 @과 점 . 사이에 적어도 하나의 문자가 있어야합니다. 그리고 점 뒤에있는 적어도 두 글자.

내가 말한 것은 for 루프를 사용하여 이러한 모든 요구 사항을 검사하는 루프를 작성하는 방법입니다. 아이디어가 있으십니까?


오늘 이전에 나는 위에 질문했습니다 ... 이제 여기에 도달했습니다. 유일한 문제는 점 다음에 최소 2자를 넣을 수 없다는 것입니다.

public class EmailValid { 
    public static void main (String[] args) { 
     System.out.print("Please Enter Your Email To Validate: "); 
     Scanner input = new Scanner (System.in); 
     String email = input.nextLine(); 
     for (int i = 0 ; i < email.length(); i ++) { 
      if (email.indexOf("@") >= 1) { 
       if (email.indexOf(".") >= email.indexOf("@")+2) 
        if ((email.indexOf("@")+email.indexOf(".") - email.length()) >= 1) 
         System.out.print("Email Passed" + (email.length() - (email.indexOf("@")+email.indexOf(".")))); 
      } 
     } 
     System.out.print("\n String legnth: "+ (email.length()) + 
       "\n Index of @: " + email.indexOf("@") + 
       "\n Index of dot: " + email.indexOf(".")); 
    } 
} 
+0

당신의 질문은 무엇인가? ("어떤 생각?"이 너무 애매하다)? – Pshemo

+0

방금 ​​전에 마지막 문장에서 설명했습니다. 만약 당신이 최선의 시도 (코드)를 보여 주려고한다면 어떤 도움을 받고 싶다면 .. 아니면 적어도 지금까지 해봤 던지 .. – LMG

+0

죄송합니다. 내가 말한 것은 for 루프를 사용하여 이러한 모든 요구 사항을 검사하는 루프를 작성하는 방법이다. – Whizz

답변

0

더 나은 방법을 고수해야합니다. for-loop를 사용하여 전체 String을 탐색해야합니다. 나는이 코드가 다음과 같아야한다고 생각한다. -

public class EmailValid { 
public static void main (String[] args) { 
System.out.print("Please Enter Your Email To Validate: "); 
Scanner input = new Scanner (System.in); 
String email = input.nextLine(); 
boolean flag=false; 
int countr=0,countd=0; 
loop:for (int i=0; i < email.length();i++) {     //Better to iterate loop till end of the String "email" 
if(email.charAt(i)=='@'){ 
    countr++; 
    if(countr>1){ 
    flag=false; 
    break loop; 
    } 
    if(i>=1) 
    flag=true; 
    else{ 
    flag=false; 
    break loop; 
    } 
    } 
if(email.charAt(i)=='.'){ 
    countd++; 
    if(countd>1){ 
     flag=false; 
     break loop;} 
    if(i>=3) 
flag=true; 
else{ 
    flag=false; 
    break loop;} 
if(email.length()>=i+3) 
    flag=true; 
else{ 
    flag=false; 
    break loop;} 
} 
if((email.indexOf(".")-email.indexOf("@"))>=2) 
{ 
    flag=true;} 
else { 
    flag=false; 
    break loop;} 
if(((int)email.charAt(i))>=65 && ((int)email.charAt(i))<=90) 
flag=true; 
else if(((int)email.charAt(i))>=97 && ((int)email.charAt(i))<=122) 
flag=true; 
else if(((int)email.charAt(i))>=48 && ((int)email.charAt(i))<=57) 
flag=true; 
else if(((int)email.charAt(i))==64 || ((int)email.charAt(i))==46) 
flag=true; 
else 
flag=false; 
//@ must at least have a char before itself and also there must be a character between '@' and '.'--So mininmum index of '@' >=1 and for '.' >=3. 
if(flag==false) 
break loop; 
} 
if(flag==true && email.length()>=5) // The minimum length of the String must be equal to minimum index of '.' +2, i.e., >=5. 
    System.out.println("Validated"); 
    else 
    System.out.println("Invalid Email"); 
    } 
    } 
+1

그래서 코드에 자신감이 있다면 [email protected]이 유효한 주소 여야합니까? !!! –

+0

아직 '.'을 확인하지 않았습니다. ** '@'뒤에 **가옵니다. IMHO, 상태 열거 형 (begin, after_arobas, after_dot)을 사용해야하며 더 명확하고 이해하기 쉽습니다. 하지만 좋은 시도 ... –

+0

'.' 확인되지 않았습니다. – Whizz

관련 문제