0

さて、これは長いです。私はクラスのプロジェクトに取り組んでおり、何をすべきかの例が与えられました。私はこれに非常に慣れていないので、できると思ったことをしましたが、これを正しく行うことができず、おそらくこのコードに大量のエラーや不適切なものがあります。これはパスワード認証システムのためのもので、その半分にすぎません。まだそこに到達していないため、パスワード生成機能をコメントアウトしました。プログラム全体がコンパイルされますが、パスワードが正しくないことが常に生成されます。

    public class FinalLab7
    {
    public static void main( String[] args )
     {

       // if (args.length == 0) // Generate password
        //{

        //System.out.println("Your new password is: " + generateValidPassword());

        //} 
        if (args.length == 1) // Test password
        {          
            System.out.print("The password you entered, " + args[0]);

            if (isValidPassword(args[0]))
            {
                System.out.println(" is a valid password");
            }
            else
            {
                System.out.println(" is NOT a valid password");
            }    
        }
        else // To many command line arguments, educate user
        {

            System.out.println();
            System.out.println("This program takes either zero or one parameter.");
            System.out.println("When run with zero parameters it will generate a password.");
            System.out.print("When run with one parameter it will test whether"); 
            System.out.println(" the parameter is a valid password.");
            System.out.println();
            System.out.println("A valid password has the following four properties:");
            System.out.println("1. A valid password contains between 8 and 14 characters, inclusive.");
            System.out.println("2. A valid password contains two or more uppercase letters [A-Z].");
            System.out.println("3. A valid password contains two or more lowercase letters [a-z]");
            System.out.println("4. A valid password contains two or more numbers [0-9]");
            System.out.println();
            System.out.println();
        }
   } 

static private boolean isValidPassword(String testPassword) 
 { 
     boolean returnValue = false;
     int uppercasecount = 0;
     int lowercasecount = 0;
     int numbercount = 0;


    if(uppercasecount>=2&&lowercasecount>=2&&numbercount>=2)
    {
        returnValue = true;
    }
    return returnValue;
}
    static public boolean CharacterIsNumber(char testChar) 
    { 
        int numbercount = 0;
        boolean returnValue = false;
        switch (testChar)
        {
            case '0':
                returnValue = true;
                //numbercount++;
                break;
            case '1':
                returnValue = true;
                //numbercount++;
                break;
            case '2':
                returnValue = true;
                //numbercount++;
                break;
            case '3':
                returnValue = true;
                //numbercount++;
                break;
            case '4':
                returnValue = true;
                //numbercount++;
                break;
            case '5':
                returnValue = true;
                //numbercount++;
                break;            
            case '6':
                returnValue = true;
                //numbercount++;
                break;
            case '7':
                returnValue = true;
                //numbercount++;
                break;
            case '8':
                returnValue = true;
                //numbercount++;
                break;
            case '9':
                returnValue = true;
                //numbercount++;
                break;           
        }
        numbercount++;
        return returnValue;
    }
    static public boolean CharacterIsUppercase(char testChar) 
    {
        int uppercasecount = 0;
        boolean returnValue = false;

        switch (testChar)
            {
                case 'A':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'B':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'C':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'D':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'E':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'F':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'G':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'H':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'I':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'J':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'K':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'L':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'M':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'N':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'O':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'P':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'Q':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'R':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'S':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'T':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'U':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'V':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'W':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'X':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'Y':
                    returnValue = true;
                    //uppercasecount++;
                    break;
                case 'Z':
                    returnValue = true;
                    //uppercasecount++;
                    break;
            }

        uppercasecount++;
        return returnValue;
    }
    static public boolean CharacterIsLowercase(char testChar) 
    {
        int lowercasecount = 0;
        boolean returnValue = false;

        switch (testChar)
            {
                case 'a':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'b':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'c':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'd':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'e':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'f':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'g':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'h':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'i':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'j':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'k':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'l':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'm':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'n':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'o':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'p':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'q':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'r':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 's':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 't':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'u':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'v':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'w':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'x':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'y':
                    returnValue = true;
                    //lowercasecount++;
                    break;
                case 'z':
                    returnValue = true;
                    //lowercasecount++;
                    break;
            }

        lowercasecount++;
        return returnValue;
    }
}           

機能しなかったさまざまな方法を試したため、uppercasecount++ 関数など、いくつかの異なる部分をコメントアウトしました。このセクションでは、パスワードに大文字が 2 つ、小文字が 2 つ、数字が 2 つ含まれているかどうかを確認することになっており、場合によって「入力したパスワードは有効か無効か」と表示されます。これは毎回無効と表示されるだけです。

4

1 に答える 1

0

あなたのコードの問題は、メソッド *isValidPassword()** に起因しています。条件に一致するかどうかを確認していましたが、変数をインクリメントしませんでした。コードを短くするために更新しました。また、コードからエラーを削除しました。あなたのコードをこのコードと比較してください。また、このコードは機能しません。エラーを修正し、コードを少し短くしただけです。

package test;

/**
 *
 * @author Tyler Weaver
 */
public class Test {

    public static void main(String[] args) {
        // if (args.length == 0) // Generate password
        //{

        //System.out.println("Your new password is: " + generateValidPassword());
        //} 
        if (args.length == 1) // Test password
        {
            System.out.print("The password you entered, " + args[0]);

            if (isValidPassword(args[0])) {
                System.out.println(" is a valid password");
            } else {
                System.out.println(" is NOT a valid password");
            }
        } else // To many command line arguments, educate user
        {

            System.out.println();
            System.out.println("This program takes either zero or one parameter.");
            System.out.println("When run with zero parameters it will generate a password.");
            System.out.print("When run with one parameter it will test whether");
            System.out.println(" the parameter is a valid password.");
            System.out.println();
            System.out.println("A valid password has the following four properties:");
            System.out.println("1. A valid password contains between 8 and 14 characters, inclusive.");
            System.out.println("2. A valid password contains two or more uppercase letters [A-Z].");
            System.out.println("3. A valid password contains two or more lowercase letters [a-z]");
            System.out.println("4. A valid password contains two or more numbers [0-9]");
            System.out.println();
            System.out.println();
        }
    }

    static private boolean isValidPassword(String testPassword) {
        int uppercasecount = 0;
        int lowercasecount = 0;
        int numbercount = 0;

        for (int count = 0; count < testPassword.length(); count++) {
            char cur = testPassword.charAt(count);

            if (CharacterIsNumber(cur)) {
                numbercount++;
            } else if (CharacterIsUppercase(cur)) {
                uppercasecount++;
            } else if (CharacterIsLowercase(cur)) {
                lowercasecount++;
            }
        }

        return (uppercasecount >= 2 && 
                lowercasecount >= 2 &&
                numbercount >= 2);
    }

    static public boolean CharacterIsNumber(char testChar) {
        return Character.isDigit(testChar);
    }

    static public boolean CharacterIsUppercase(char testChar) {
        return Character.isUpperCase(testChar);
    }

    static public boolean CharacterIsLowercase(char testChar) {
        return Character.isLowerCase(testChar);
    }
}

補足として: IDE を使用していない場合を除き、args[] コマンド ラインの使用は控えたいと思います。IDE を使用している場合、必ずしも正しく動作するとは限りません。初めての方は Scanner クラスをお勧めします。

于 2014-10-20T00:29:49.170 に答える