我对使用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("."));
}
}
答案 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");
}
}