0

問題文は次のようになります。

emailIdという文字列データ型を作成する必要があります

電子メール ID は、適切なセッター メソッドを使用して設定する必要があります。

電子メール ID チェックの検証ルールは、main() に実装する必要があります。

条件は次のとおりです。

  1. メール ID の全体の長さは 3 より大きく 20 未満である必要があります。

  2. emailId には、「@」の後に最小 1 個、最大 2 個の「.」を含める必要があります。文字。

  3. 「@」の前の部分文字列には、大文字、小文字、および「_」(アンダースコア) 記号の組み合わせを含める必要があります。

  4. メール ID の最初の文字は大文字にする必要があります。

上記のすべての条件が有効な場合は、「電子メール ID は有効です」と表示されます。そうでない場合は、適切なエラー メッセージが表示されます。

これは私のコードです:

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("CFDV@gm.a.il.com");
    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;


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

    //Condition 2
        int temp = email.length();
        if(email.contains("@")){
            flag2=true;
            int a=email.indexOf("@");
             for(int i=a;i<temp;i++){
        if(email.charAt(i)=='.'){
        flag3=true; 
        count=count+1;
        }
        }
        if(count<1||count>2){
        flag4=false;
        }
        else{
        flag4=true;
        }
        }
        else{
        flag2 =false;
        System.out.println("No @ symbol present");
        }


    //Condition 3
    if(email.matches("[A-Z a-z _]+@.*")) //Unable to get the right RegEx here!
        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");
    }


}
}

条件#2(ロジック?)と条件#3(RegExp部分)がわかりません。テストケースのいくつかは正しいように見えますが、残りは間違っています (#2 と esp #3 のロジックが間違っているためだと思います)。

正しい出力を得るには、ここでどのような変更を行う必要があるか教えてください。ありがとう!

4

2 に答える 2

0

メール ID の全体の長さは 3 より大きく 20 未満である必要があります。

この部分は問題ありません - 長さのチェックのペア。考慮事項:

  1. は必要ありませif (condition == true)if (condition)
  2. これが失敗した場合は、電子メールの処理を停止してエラーを表示するだけです。同じことが他のすべてのエラー条件にも当てはまります。

emailId には、「@」の後に最小 1 個、最大 2 個の「.」を含める必要があります。文字。

最初に @ 記号を確認し、インデックスを取得します。それができたら、文字列を分割できます。次に、部分文字列をピリオドで分割して数えることができます-2つまたは3つが必要です。

おそらくこれを行う正規表現もあります。

「@」の前の部分文字列には、大文字、小文字、および「_」(アンダースコア) 記号の組み合わせを含める必要があります。

このアプローチを使用して、正規表現が各部分に一致する必要があることを確認できます。現状では、3つすべてをチェックする代わりに、大文字、小文字、またはアンダースコアがある場合、正規表現が機能すると思います。

メール ID の最初の文字は大文字にする必要があります。

最初の部分と同じコメント== trueです。失敗した場合は、メソッドをドロップして短絡します。

于 2013-05-13T14:49:51.613 に答える