我的Java程序有点问题。我应该提示用户使用不同的密码模式。我需要格式DDLLDD(D =数字,L =字母),但我不太清楚如何处理这个。
我一直在寻找类似的问题,但我只找到了你应该检查输入是否有任何顺序的数字/字母的问题。我发现了一些正则表达式的东西,但我以前从未使用过那些,我只使用while / for循环检查字符输入。
我试过了,但我不认为我得到了它。我试着检查每个字符索引。
Scanner s = new Scanner(System.in);
String input = null;
// Prompt
System.out.print("Enter input: ");
input = s.nextLine();
// Check length
while(!(input.length()==6))
{
System.out.print("Re-Enter input: ");
input = s.nextLine();
}
boolean inputcheck = false;
while(inputcheck)
{
char ch = input.charAt(0);
char ch1 = input.charAt(1);
char ch2 = input.charAt(2);
char ch3 = input.charAt(3);
char ch4 = input.charAt(4);
char ch5 = input.charAt(5);
boolean check = Character.isDigit(ch);
boolean check1 = Character.isDigit(ch1);
boolean check2 = Character.isLetter(ch2);
boolean check3 = Character.isLetter(ch3);
boolean check4 = Character.isDigit(ch4);
boolean check5 = Character.isDigit(ch5);
if((check==true)&&(check1==true)&&(check2==true)&&(check3==true)&&(check4==true)&&(check5==true));
{
inputcheck = true;
}
}
System.out.println("PASS");
答案 0 :(得分:3)
我不是正则表达式的专业人士,但这可能适合您的需要:
\\d{2}\\D{2}\\d{2}
基本上它意味着:
\d //Any digit, short for [0-9]
{2} //Occurs 2 number of times,
\D //non-digit, short for [^0-9]
do{
System.out.print("Input: ");
input = s.nextLine();
} while (!input.matches("\\d{2}\\D{2}\\d{2}"));
您可以详细了解正则表达式here。
答案 1 :(得分:0)
仔细检查你的逻辑。您显示的代码似乎只“传递”所有数字的密码。具体而言,check2
和check3
可能需要与它们相反,或者通过:
boolean check2 = !Character.isDigit(ch2);
或
...&&(check2==false)&&...