Java 验证密码

Java 验证密码,java,string,validation,boolean,Java,String,Validation,Boolean,我想检查密码是否至少包含8个字符,并且只包含数字和字母。 这里的问题是,即使我输入了一个有效的密码,它始终显示“无效”。这是密码。谢谢 public static void main(String[] args) { String pw; Scanner sc = new Scanner(System.in); System.out.print("Enter a password: "); pw = sc.next(); if(isValid(pw)=

我想检查密码是否至少包含8个字符,并且只包含数字和字母。 这里的问题是,即使我输入了一个有效的密码,它始终显示“无效”。这是密码。谢谢

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

    System.out.print("Enter a password: ");
    pw = sc.next();

    if(isValid(pw)==true)
    {
        System.out.println("Valid Password");
    }
    else
    {
        System.out.println("Invalid Password");
    }

}

public static boolean isValid(String pw)
{
    if(pw.length()<8)
    {
        return false;
    }
    else
    {
        for(int x=0; x<pw.length(); x++)
        {

            return Character.isLetterOrDigit(pw.charAt(x));

        }
    }
    return true;
}
publicstaticvoidmain(字符串[]args)
{
串pw;
扫描仪sc=新的扫描仪(System.in);
System.out.print(“输入密码:”);
pw=sc.next();
如果(isValid(pw)=真)
{
System.out.println(“有效密码”);
}
其他的
{
System.out.println(“无效密码”);
}
}
公共静态布尔值isValid(字符串pw)
{

如果(pw.length()您在循环的第一次迭代中返回结果,那么您应该创建一个标志变量并在循环结束时返回结果,或者您可以在循环中反转
if
条件,如果该条件的计算结果为true,则返回false,如果该条件的计算结果为true,则在循环结束时返回true

public static boolean isValid(String password){
    if(password.length() < 8)
        return false;

    for(int x = 0; x < password.length(); x++)
        if(!Character.isLetterOrDigit(password.charAt(x)))
            return false;

    return true;
}
公共静态布尔值有效(字符串密码){
if(password.length()<8)
返回false;
对于(int x=0;x
除了isValid方法中“for”循环中的返回语句外,您的代码逻辑是正确的。下面是编辑的代码:

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

    System.out.print("Enter a password: ");
    pw = sc.next();

    if(isValid(pw))
    {
        System.out.println("Valid Password");
    }
    else
    {
        System.out.println("Invalid Password");
    }

}

public static boolean isValid(String pw)
{
    if(pw.length()<8)
    {
        return false;
    }
    else
    {
        for(int x=0; x<pw.length(); x++)
        {
            if(!Character.isLetterOrDigit(pw.charAt(x)))
                 return false;
        }
    }
    return true;
}
publicstaticvoidmain(字符串[]args)
{
串pw;
扫描仪sc=新的扫描仪(System.in);
System.out.print(“输入密码:”);
pw=sc.next();
if(isValid(pw))
{
System.out.println(“有效密码”);
}
其他的
{
System.out.println(“无效密码”);
}
}
公共静态布尔值isValid(字符串pw)
{

if(pw.length()你调试了吗?什么是
pw
如果你输入密码,代码实际返回到哪里,等等。你在第一次检查时,在哪里实现了你的循环,对吗?你的循环逻辑完全关闭了。请调试你的代码,看看它返回了什么。或者更好的是:编写一些测试看看哪个失败了-