Java代码检查字母和数字的密码?

Java代码检查字母和数字的密码?,java,authentication,passwords,Java,Authentication,Passwords,第一个帖子是Confussamagin。我的任务是创建一个密码提示程序。需要检查密码中是否包含至少一个数字和一个字母。此外,密码长度必须介于6到10之间 我的问题是试图找出如何查看密码中是否存在数字和字母。在检查密码区域,我不确定从哪里开始。我不知道如何看它是否有一个字母和一个数字。我知道如何使用for语句进行计数和检查,但它所做的只是检查是否包含所有字母或数字 import java.util.Scanner; class Password { public static void

第一个帖子是Confussamagin。我的任务是创建一个密码提示程序。需要检查密码中是否包含至少一个数字和一个字母。此外,密码长度必须介于6到10之间

我的问题是试图找出如何查看密码中是否存在数字和字母。在检查密码区域,我不确定从哪里开始。我不知道如何看它是否有一个字母和一个数字。我知道如何使用for语句进行计数和检查,但它所做的只是检查是否包含所有字母或数字

import java.util.Scanner;

class Password {

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

//------ENTER A USERNAME
        System.out.println("Welcome please enter your username and password.");
        System.out.print("Username >>");
        input.nextLine();


//------PASSWORD AUTHENTICATION BEGIN       
        String password = enterPassword();
            while ( !checkPassword(password) ) {
            System.out.println("Password must be 6 - 10 characters long!"); 
            password = enterPassword();
            }

//------PASSWORD VERIFY
        String passwordverify = enterPassword();
        while (!password.equals(passwordverify)){
            System.out.println("ERROR - Passwords DO NOT MATCH Re-Enter Passwords Again");
            password = enterPassword();

        }

//------ACCEPT PASSWORD     
        System.out.println("Username and Password Accepted!");

        }


//--ENTER PASSWORD STATEMENT
    public static String enterPassword(){
        String password;
        Scanner input = new Scanner(System.in);
        System.out.print("Password >>");
        password = input.nextLine();
        return password;
        }

//--BOOLEAN CHECK PW    
    public static boolean checkPassword(String password){
        int length;
        length = password.length();
            if (length < 6 || length > 11){
            return false;
            }
        for (int i = 0; i < password.length();i++){
            if (!Character.isLetter(password.charAt(i)))
            return false;
        }
        return true;
        }

}
import java.util.Scanner;
类密码{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//------输入用户名
System.out.println(“欢迎输入您的用户名和密码”);
系统输出打印(“用户名>>”;
input.nextLine();
//------密码验证开始
字符串密码=输入密码();
而(!checkPassword(password)){
System.out.println(“密码长度必须为6-10个字符!”);
密码=输入密码();
}
//------密码验证
字符串passwordverify=enterPassword();
而(!password.equals(passwordverify)){
System.out.println(“错误-密码不匹配,请重新输入密码”);
密码=输入密码();
}
//------接受密码
System.out.println(“接受用户名和密码!”);
}
//--输入密码语句
公共静态字符串enterPassword(){
字符串密码;
扫描仪输入=新扫描仪(System.in);
系统输出打印(“密码>>”;
password=input.nextLine();
返回密码;
}
//--布尔校验
公共静态布尔校验密码(字符串密码){
整数长度;
长度=密码。长度();
如果(长度<6 | |长度>11){
返回false;
}
对于(int i=0;i
不写作业。。。。您走对了您必须确保您的字母计数和数字计数都至少为1。

您的代码只缺少变量计数器。保留两个计数器:一个用于计数字母,一个用于计数数字,并在
checkPassword
内的两个for循环结束时执行
if
测试,以检查两个计数器是否至少都是一个

另一种方法是使用正则表达式。请参阅此链接:

为什么您会强制用户使用字母和数字,同时将其密码长度限制为10?存储散列的密码(就像您应该存储的那样),长度甚至无关紧要。可能的重复是为了分配,因此存储散列的密码在这里不是问题:S@GolezTrol,出于某种奇怪的原因,这实际上是一个非常真实的世界,有密码的系统。我从来都不明白需要将密码限制在一定的字符数(特别是非常低的字符数),但它一直存在。有什么帮助吗?我不明白。我非常困惑。它不允许我比较布尔值中计数的两个整数