2013-05-13 107 views
-5

考慮在主方法的入門級中提供的電子郵件ID。驗證電子郵件地址的用戶名部分

String emailId = "[email protected]"; 

問題描述:

  1. 的EMAILID的總長度應> 3和< 20.

  2. 的EMAILID必須包括 「@」,後跟最少1最多2個「。」字符。

  3. 「@」之前的子串必須包含大寫字母,小寫字母和「_」(下劃線)符號的組合。
  4. emailId的第一個字母必須是大寫。

如果上述所有條件都有效,它必須顯示一條成功消息或應該顯示一條適當的ERROR消息。

這是不符合我想要的代碼。

public class EmailCheck { 
String emailId; 
public void setEmailId(String emailId){ 
    this.emailId=emailId; 
} 
public String getEmailId(){ 
    return emailId; 
} 
public static void main(String[] args) { 
    EmailCheck em = new EmailCheck(); 
    em.setEmailId("[email protected]"); 
    String email = em.getEmailId(); 
    int length = email.length(); 
    boolean flag1 = false; 
    boolean flag2 = false; 
    boolean flag3 = false; 
    boolean flag4 = false; 
    boolean flag5 = false; 
    boolean flag6 = false; 
    boolean flag7 = false; 
    int count = 0; 
    int count2 = 0; 

    //Condition 1 
    if((length>3 && length<20)== true) 
     flag1 = true; 
    else 
     flag1 = false; 

    //Condition 2 
    for(int i=0;i<length;i++){ 
     if(email.charAt(i)=='@'){ 
      flag2 = true; 
      for(int j=i+1;j<length;j++){ 
       if(email.charAt(j)=='.') 
        { 
        flag3 = true;  
        count=++count; 
        } 
       else 
        flag3 = false; 
      } 
      if(count<1 || count>2) 
      { 
       flag4 = false; 
       //System.out.println("Invalid position of special characters"); 

      } 
      else 
       flag4 = true; 

     } 
     else 
      flag2 = false; 
    } 

    //Condition 3 
    if(email.matches("[a-zA-Z_][email protected]*")) 
     flag5 = true; 
    else 
     flag5 = false; 

    //Condition4 
    if(Character.isUpperCase(email.charAt(0))==true) 
      flag6 = true; 
    else 
     flag6=false; 

    if(flag1==true && flag2==true && flag3==true && flag4==true && flag5==true &&flag6==true) 
     System.out.println("Email ID is valid"); 
    else{ 
     if(flag1==false) 
      System.out.println("Inavlid length of Email ID"); 
     if(flag2==false||flag3==false||flag4==false) 
      System.out.println("Invalid Position of Special Characters"); 
     if(flag5==false) 
      System.out.println("Invalid combination for username"); 
     if(flag6==false) 
      System.out.println("Invalid case of first letter"); 
    } 


} 
} 
+0

我強烈建議你尋找到正則表達式 – Terence 2013-05-13 11:22:24

+2

你爲什麼要這麼做?電子郵件ID是不區分大小寫的:'Hellooo_hell'和'hELlOoO_HElL'是電子郵件遞送目的相同的用戶ID。下劃線也不是用戶名中的強制性字符。你真的想做什麼?你真的驗證電子郵件地址嗎?如果是,那麼你的做法是錯誤的。如果不是,那麼描述你的問題。 – 2013-05-13 11:23:01

+5

下次請使用有意義的標題。 「Java方法和字符串」沒有提到你的問題。 – Jesper 2013-05-13 11:23:14

回答

2

可以使用matches方法從String

if(emailId.matches("[a-zA-Z_][email protected]*")) { 
    // ok matches; 
} else { 
    // does not match 
} 
+0

這不會強制使用_combination_大寫,小寫_and_下劃線字符。 – 2013-05-13 11:27:18

+0

你能舉一個不起作用的例子嗎? – 2013-05-13 11:29:56

+0

'greg @ greg.com'匹配,但不包含大寫字母,也不包含下劃線。在問題部分查看'Aleks G'評論。 – 2013-05-13 11:32:48

相關問題