我有一个程序从用户处获取密码,然后它检查是否满足条件,然后输出“有效密码”或“无效密码”。这样就可以了,我能够将验证方面转换为同一程序中的方法,并且可以工作,但是我想将其变成一个我只能说if( validate(pw) == true ) ...
或至少if( v.getValidation() == true ) ...
的类在任何程序中,它将测试我的状况。我以前使用过自定义类,但是由于某种原因,我尝试的所有内容都无法在此类上使用,我已经花了好几天了。
这是我的方法:
public boolean validate( String pw )
{
boolean l = false, u = false, lo = false, d = false, r = true;
if( pw.length() >= 6 )
{ l = true; }
for( int i = 0; i < pw.length(); i++ )
{
if( Character.isUpperCase( pw.charAt(i) ) )
{ u = true; }
if( Character.isLowerCase( pw.charAt(i) ) )
{ lo = true; }
if( Character.isDigit( pw.charAt(i) ) )
{ d = true; }
}
if( l == false || u == false || lo == false || d == false )
{ r = false; }
return r;
}
编辑:
谢谢大家的投入,这就是最后的结果:
public class Password
{
public static boolean validate( String pw )
{
boolean result = false;
int upper = 0, lower = 0, digit = 0;
if( pw.length() >= 6 )
{
for( int i = 0; i < pw.length(); i++ )
{
if( Character.isUpperCase( pw.charAt(i) ) )
{ upper++; }
if( Character.isLowerCase( pw.charAt(i) ) )
{ lower++; }
if( Character.isDigit( pw.charAt(i) ) )
{ digit++; }
}
}
if( upper >= 1 && lower >= 1 && digit >= 1 )
{ result = true; }
return result;
}
}
答案 0 :(得分:2)
您不需要为此做一堂课。您可以执行以下操作:
public static void main(String[] args) {
boolean valid = validate("PassWord22");
}
public static boolean validate( String pw ) {}
关于方法的一些注意事项:
您无需在if语句中执行l == true
或l == false
。您可以简单地做到:
if( !l || !u || !lo || !d )
{ r = false; }
实际上您可以返回
return l && u && lo && d;
如果长度不是6或更大,则只需返回false。这将节省检查String
我会想出更好的变量名。单/两个字母的变量名很难区分它们代表什么,并且容易混淆。 (而不是l
,您可以拥有length
,而不是u
,您可以拥有upper
)
此外,使用正则表达式和String.matches()
可以更轻松地解决此问题:
public static boolean validate(String pw) {
String pattern = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).+$";
return (pw.length() > 5 && pw.matches(pattern));
}
答案 1 :(得分:-1)
我让它工作了,原来是编译器未选择的代码错误。我想删除问题,但由于某些原因他们不会让我。因此,以防万一您感到好奇,这就是我的班级运作的样子:
{{1}}