1

問題の説明:

一部の Web サイトでは、パスワードに特定の規則が課されています。文字列が有効なパスワードかどうかをチェックするメソッドを作成します。パスワード規則が次のようになっているとします。

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

ユーザーにパスワードの入力を促し、ルールに従っている場合は「有効なパスワード」、それ以外の場合は「無効なパスワード」を表示するプログラムを作成してください。

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

import java.util.*;  
import java.lang.String;  
import java.lang.Character;  

/**
 * @author CD
 * 12/2/2012
 * This class will check your password to make sure it fits the minimum set     requirements.
 */
public class CheckingPassword {  

    public static void main(String[] args) {  
        Scanner input = new Scanner(System.in);  
        System.out.print("Please enter a Password: ");  
        String password = input.next();  
        if (isValid(password)) {  
            System.out.println("Valid Password");  
        } else {  
            System.out.println("Invalid Password");  
        }  
    }  

    public static boolean isValid(String password) {  
        //return true if and only if password:
        //1. have at least eight characters.
        //2. consists of only letters and digits.
        //3. must contain at least two digits.
        if (password.length() < 8) {   
            return false;  
        } else {      
            char c;  
            int count = 1;   
            for (int i = 0; i < password.length() - 1; i++) {  
                c = password.charAt(i);  
                if (!Character.isLetterOrDigit(c)) {          
                    return false;  
                } else if (Character.isDigit(c)) {  
                    count++;  
                    if (count < 2)   {     
                        return false;  
                    }     
                }  
            }  
        }  
        return true;  
    }  
}

プログラムを実行すると、パスワードの長さだけがチェックされます。文字と数字の両方をチェックしていることを確認する方法と、パスワードに少なくとも 2 桁の数字が含まれていることを確認する方法がわかりません。

4

6 に答える 6

2

有効なパスワードに次のものがあるとします。

  • 8文字以上16文字以内
  • 1 つ以上の大文字
  • 1 つ以上の小文字
  • 1桁以上
  • 1 つ以上の特殊文字 ($、@、または ! など)

コード:

import java.util.Scanner;
public class Password {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int min =8;
    int max=16;
    int digit=0;
    int special=0;
    int upCount=0;
    int loCount=0;
    String password;
    Scanner scan = new Scanner(System.in);
    System.out.println(" Enter Your Password:");
        password = scan.nextLine();
    if(password.length()>=min&&password.length()<=max){
        for(int i =0;i<password.length();i++){
            char c = password.charAt(i);
            if(Character.isUpperCase(c)){
                upCount++;
            }
            if(Character.isLowerCase(c)){
                loCount++;
            }
            if(Character.isDigit(c)){
                digit++;
            }
            if(c>=33&&c<=46||c==64){
                special++;
            }
        }
        if(special>=1&&loCount>=1&&upCount>=1&&digit>=1){
            System.out.println(" Password is good:");
        }

    }

    if(password.length()<min){

        for(int i =0;i<password.length();i++){
            char c = password.charAt(i);
            if(Character.isLowerCase(c)){
                loCount++;
            }
            }

        if(loCount>0){
            System.out.println(" Password must be atleat "+min+" characters:");
            System.out.println(" You need atleast one upper case chracter:");
            System.out.println(" You need atleast one digit:");
            System.out.println(" You need atleast one special chracter:");



    }
    }
    else if(password.length()<min&&upCount>1){
        for(int i =0;i<password.length();i++){
        char c =password.charAt(i);
        if(Character.isLowerCase(c)){
            loCount++;
        }
         if(Character.isUpperCase(c)){
            upCount++;
        }
        }
        if(loCount>0&&upCount>0){
        System.out.println(" Password must be atleast "+min+" chracters:");
        System.out.println(" You need atleast one digit:");
        System.out.println(" You need atleast one special chracter:");
    }
    }
     if(password.length()>max||password.length()>=max&&upCount>1&&loCount>1&&digit>1){
         System.out.println(" Password is too long.Limit is "+max+" chracters:");
                 System.out.println(" You need atleast one special chracter:");

        }
      if(password.length()>=min&&password.length()<=max&&loCount>0&&upCount>0&&digit>0&&special==0){
         System.out.println(" You need atleast a special chracter");
     }
      if(password.length()>=min&&password.length()<=max&&loCount>0&&upCount>0&&digit==0&&special==0){
         System.out.println(" You need atleast one digit:");
         System.out.println(" You need atleast one special chracter:");
     }
   }
}
于 2016-02-21T19:18:53.837 に答える
0

以前に回答したように、最初にすべてのパスワード文字を確認する必要があります。数字を数えて、最後に count が 2 より小さいかどうかを確認します。参照コードは次のとおりです。

if (password.length() < 8) {   
        return false;  
    } else {      
        char c;  
        int count = 0;   
        for (int i = 0; i < password.length(); i++) {  
            c = password.charAt(i);  
            if (!Character.isLetterOrDigit(c)) {          
                return false;  
            } else if (Character.isDigit(c)) {  
                count++;     
            }  
        }  
        if (count < 2)   {     
            return false;  
        }  
    }  
    return true;  
}  
于 2012-12-02T22:43:33.713 に答える
0

パッケージメソッド;

/* 2. 文字列が有効なパスワードかどうかをチェックする Java メソッドを記述します。パスワードの規則: パスワードは 10 文字以上である必要があります。パスワードは文字と数字のみで構成されています。パスワードには、少なくとも 2 桁の数字が含まれている必要があります。

期待される出力:

  1. パスワードは 8 文字以上である必要があります。
  2. パスワードは文字と数字のみで構成されています。
  3. パスワードには少なくとも 2 桁の数字が含まれている必要があります パスワードを
    入力してください (上記の利用規約に同意したことになります): abcd1234
    パスワードは有効です: abcd1234 */
public class CheckPassword {
    
    public static String password;
    public static int disitCounter = 0;
    
    public static boolean isValid(String password) {
        
        
        if (password.length() >= 10 ) {
            for(int index = 0; index < password.length(); index++) {
                char passChar = password.charAt(index);
                if (!Character.isLetterOrDigit(passChar)) {
                    return false;
                }
                else {
                    if (Character.isDigit(passChar)) {
                        disitCounter++;
                    }
                }
                
            }
            
        }
        if(disitCounter < 2) {
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        password = "abcdefgh1w3";
        if(isValid(password)) {
            System.out.print("It is a valid password");
        }
        else {
            System.out.print("It is a invalid password");
        }
    }
}
于 2019-03-12T03:33:46.600 に答える
-1
package com.parag;

/*
 * @author Parag Satav
 */
public boolean check(String password) {

    boolean flagUppercase = false;
    boolean flagLowercase = false;
    boolean flagDigit = false;
    boolean flag = false;

    if (password.length() >= 10) {

        for (int i = 0; i < password.length(); i++) {

            if (!Character.isLetterOrDigit(password.charAt(i))) {
                return false;
            }

            if (Character.isDigit(password.charAt(i)) && !flagDigit) {
                flagDigit = true;

            }

            if (Character.isUpperCase(password.charAt(i)) && !flagUppercase) {
                flagUppercase = true;

            }

            if (Character.isLowerCase(password.charAt(i)) && !flagLowercase) {
                flagLowercase = true;
            }
        }
    }

    if (flagDigit && flagUppercase && flagLowercase) {
        flag = true;
        System.out.println("Success..");
    } else
        System.out.println("Fail..");

    return flag;
}
于 2014-07-27T00:16:41.830 に答える