使用循环进行电子邮件验证

时间:2014-06-08 15:17:35

标签: java email-validation

我对使用Java进行电子邮件验证有疑问。我知道使用它的正确方法是通过正则表达式和模式,但由于某种原因,我被要求使用循环来编写它。换句话说,我必须使用for循环验证电子邮件。使用模式很容易达到要求,但是当涉及到循环时,它有点令人困惑。

电子邮件必须至少有@之前的一个字母,@和点.之间至少有一个字母。点后面至少有两个字母。

我的意思是如何编写一个使用for循环检查所有这些要求的循环? 有什么想法吗?


今天早些时候我问过上面的问题......现在我到了这里。现在唯一的问题是我不能在点之后放置至少两个字符。

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("."));
    }
}

1 个答案:

答案 0 :(得分:0)

最好你应该坚持你采用的方法。您应该使用for循环遍历整个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");
   }
  }