0

次の UML ダイアグラムで指定されているように、Password2 という名前のクラスを設計します。 ここに画像の説明を入力

  • パスワードは 7 文字以上にする必要があります
  • パスワードは文字と数字のみで構成されています
  • パスワードには少なくとも 3 桁の数字が含まれている必要があります

+Password2 (ps: String)パスワードが入力された構成

+verifyPassword2():void他のサポート メソッドを呼び出す

-verifyLength():booleanパスワードの長さに基づいて true/false を返します

-verifyValidCharacters():boolean有効/無効な文字に基づいて true/false を返します

-verifyNumberOfDigits(): boolean桁数に基づいて真/偽を返します

+printReport():void以下に指定された要約レポートを印刷します

これが私がこれまでに持っているものです:

public class Password2 {
private boolean rule1;
private boolean rule2;
private boolean rule3;
private String ps;

public Password2(){
}

 public Password2(String ps){
     this.ps = ps;
 }

 public void verifyPassword2(){
     //Verify the password is the right length
     rule1 = verifyLength();
     rule2 = verifyValidCharacters();
     rule3 = verifyNumberOfDigits();
}    
private boolean verifyLength(){
         if (ps.length() >= 8){
             return true;
        return false;
    }
     //Verify if the password have the right characters
private boolean verifyValidCharacters(){
    if (ps.matches("^[A-Za-z1-9]$"){
        return true;}
    return false;    
    }
     //Verify if the password contains at least 2 digits
private boolean verifyNumberOfDigits(){
    int digit = 0;
    for (int i = 0; i = <ps.length(); i++){
        char letter = password.charAt(i);
        if(Character.isDigit(letter)){
                digit++;
                    }
         if (digits >= 2){
            return true;{
                    }
         return false
         }
     }

 public void printReport(){
     String Report;
     Report = "\t+++++++++++++++++ Password Report ++++++++++++++++++++\n";
     Report += "\tLebron Broadnax\n";
     Report += "\tCS1302\n";
     Report += "\t6/11/201\n3";
     Report += "\t+++++++++++++++++++++++++++++++++++++++++++++++++++++";

 }
 }

メソッドは他のメソッドの中にありませんそれは私が投稿した方法です

4

1 に答える 1

1

改善のための 1 つのヒント:

//Verify if the password have the right characters
private boolean verifyValidCharacters()
{
     if (ps.matches("^[A-Za-z1-9]$")
         return true;

    return false;
}

次のように変更できます。

private boolean verifyValidCharacters()
{
     return ps.matches("^[A-Za-z1-9]$");
}

true一致する場合と一致しない場合に返したいのでfalse、まさにmatches(regex)そうです。

同様のロジックを以下に適用できます。

  private boolean verifyNumberOfDigits()
  {
       int digit = 0;

       for (int i = 0; i = <ps.length(); i++)
       {
            char letter = password.charAt(i);

            if(Character.isDigit(letter))
                digit++;
       }            

       return (digit >= 2);             
 }

また、メソッドはメソッド内で宣言しないでくださいverifyPassword2

質問はcodereview.stackexchangeに投稿してください。

于 2013-06-12T17:53:59.137 に答える