有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java创建验证密码的程序

我必须编写密码验证程序

您将拥有以下方法:

main(字符串[]):调用getValidPassword

getValidPassword():检查密码是否具有所有条件,如果有效,则打印确认语句,否则打印无效语句并接受新密码

checkLength(String):如果密码字符串符合长度标准,则返回true,否则返回false

checkUpperCase(String):如果密码字符串具有足够的大写字母,则返回true,否则返回false

checkLowerCase(String):如果密码字符串包含足够的小写字母,则返回true,否则返回false

checkNumbers(String):如果密码字符串具有足够的数字,则返回true,否则返回false

上述列表的格式如下:

methodName(listOfParameterTypes):功能和返回值(如果有) 请确保严格按照本实验室给出的方法名称

  • 这是我的代码。我的问题是密码错误的情况。怎样 要让它获得另一个输入。。。直到用户输入符合列表要求的正确密码

在这里输入代码

import java.util.Scanner;

public class PasswordValidator {
   public static void main(String[] args) {
      Scanner sc=new Scanner(System.in);

      String password=sc.nextLine();
      getValidPassword(password);

   }

   public static void getValidPassword(String password) {

      boolean valid;

      if ( checkLength(password) && checkUpperCase(password) && checkLowerCase

(password) && checkNumbers(password) ) {
         System.out.print("Password accepted");
         valid=true;
      }
      else {
         System.out.print("Invalid password, try again");
         valid=false;

      }

   }


   //checks PASSWORDS length
   public static boolean checkLength(String password) {
      boolean length;

      if (password.length() >= 8 ) {
         length=true;
      }
      else {
         length=false;
      }

      return length;

   }//finish length check

   //checks uppercase
   public static boolean checkUpperCase(String password) {
      int j=0;
      boolean upper;

      //count uppercases
      String word=password.toUpperCase();
      for (int i=0; i<password.length(); ++i) {
         if (password.charAt(i)==word.charAt(i)) {
            ++j;
         }
         else {

                j=j;
             }
          }

          if (j>=2) {
             upper=true;
          }
          else {
             upper=false;
          }

          return upper;

       }//finish uppercase check

       //checks lowercase
          public static boolean checkLowerCase(String password) {
          int j=0;
          String word=password.toLowerCase();
          boolean low;
          //count lower cases
          for (int i=0; i<password.length(); ++i) {
             if (password.charAt(i)==word.charAt(i)) {
                ++j;
             }
             else {
                j=j;
             }
          }

          if (j>=1) {
             low=true;
          }
          else {
             low=false;
          }

          return low;   
       }//finish lowercase

       //check numbers
       public static boolean checkNumbers(String password) {
          int j=0;
          boolean num;

          for (int i=0; i<password.length(); ++i) {
             if (Character.isDigit(password.charAt(i))) {
                ++j;
             }
             else {
                j=j;
             }
          }

             if (j>=2) {
                num=true;
             }
             else {
                num=false;
             }



       return num;
       }//finish numbers





    }

共 (2) 个答案

  1. # 1 楼答案

    import java.util.Scanner;
    
    public class PasswordValidator {
       public static void main(String[] args) {
          Scanner sc=new Scanner(System.in);
    
          String password=sc.nextLine();
          while(getValidPassword(password))
          {
                System.out.println("Wrong Password!! Try Again");
          }
       }
    
       public static boolean getValidPassword(String password) {
    
          boolean valid;
    
          if ( checkLength(password) && checkUpperCase(password) && checkLowerCase(password) && checkNumbers(password) ) {
             System.out.print("Password accepted");
             valid=true;
          }
          else {
             System.out.print("Invalid password, try again");
             valid=false;
            }
            return valid;
       }
        //checks PASSWORDS length
       public static boolean checkLength(String password) {
          boolean length;
    
          if (password.length() >= 8 ) {
             length=true;
          }
          else {
             length=false;
          }
    
          return length;
    
       }//finish length check
    
       //checks uppercase
       public static boolean checkUpperCase(String password) {
          int j=0;
          boolean upper;
    
          //count uppercases
          String word=password.toUpperCase();
          for (int i=0; i<password.length(); ++i) {
             if (password.charAt(i)==word.charAt(i)) {
                ++j;
             }
             else {
    
                    j=j;
                 }
              }
    
              if (j>=2) {
                 upper=true;
              }
              else {
                 upper=false;
              }
    
              return upper;
    
           }//finish uppercase check
    
           //checks lowercase
              public static boolean checkLowerCase(String password) {
              int j=0;
              String word=password.toLowerCase();
              boolean low;
              //count lower cases
              for (int i=0; i<password.length(); ++i) {
                 if (password.charAt(i)==word.charAt(i)) {
                    ++j;
                 }
                 else {
                    j=j;
                 }
              }
    
              if (j>=1) {
                 low=true;
              }
              else {
                 low=false;
              }
    
              return low;   
           }//finish lowercase
    
           //check numbers
           public static boolean checkNumbers(String password) {
              int j=0;
              boolean num;
    
              for (int i=0; i<password.length(); ++i) {
                 if (Character.isDigit(password.charAt(i))) {
                    ++j;
                 }
                 else {
                    j=j;
                 }
              }
    
                 if (j>=2) {
                    num=true;
                 }
                 else {
                    num=false;
                 }
           return num;
           }//finish numbers
        }
    
  2. # 2 楼答案

    把所有的IO分离出来,集中精力在方法上

    public class PasswordValidator {
    
        public static boolean isValidPassword(String password) {
            boolean isValid = false;
            // add logic and rules here
            return isValid;
        }
    }
    

    使用JUnit而不是命令行输入测试它

    public class PasswordValidatorTest {
        @Test
        public void testIsValidPassword_Success() {
            // setup
            // exercise
            // assert
        }
    
        @Test
        public void testIsValidPassword_Failure() {
            // setup
            // exercise
            // assert
        }
    
    }