Java 密码和特定要求程序

Java 密码和特定要求程序,java,Java,我目前正在为我的Java编程类做作业 书中的问题要求用户创建一个程序,该程序使用JOptionPane框向用户询问密码。密码必须介于6到10个字符之间,并且至少有一个数字和一个字母。一旦满足此要求,请用户验证其密码。如果他们的第二个输入与第一个不匹配,请再次询问原始问题。两个输入匹配后,显示消息“success!” 我已经达到了可以检查字符数的程度,但我无法用我的一生来找出如何检查数字和字母。我已经尝试过嵌套for循环来搜索数字和字母,但我无法找到一种方法,使它在没有数字或字母的情况下绕过长度要

我目前正在为我的Java编程类做作业

书中的问题要求用户创建一个程序,该程序使用JOptionPane框向用户询问密码。密码必须介于6到10个字符之间,并且至少有一个数字和一个字母。一旦满足此要求,请用户验证其密码。如果他们的第二个输入与第一个不匹配,请再次询问原始问题。两个输入匹配后,显示消息“success!”

我已经达到了可以检查字符数的程度,但我无法用我的一生来找出如何检查数字和字母。我已经尝试过嵌套for循环来搜索数字和字母,但我无法找到一种方法,使它在没有数字或字母的情况下绕过长度要求。这是我当前的代码

import javax.swing.JOptionPane;
class Password{
   public static void main(String[] args){

      String input1 = "";
      String input2 = "";
      int inputLength;

      do{
         do{

            input1 = JOptionPane.showInputDialog(null, "Enter your password\nIt must be 6 to 10 characters and\nhave at least one digit and one letter");

            inputLength = input1.length();

         }while(inputLength < 6 || inputLength > 10);

         input2 = JOptionPane.showInputDialog(null, "Verify Password");

      }while(!(input1.equals(input2)));

      JOptionPane.showMessageDialog(null, "Success!");

   }
}
import javax.swing.JOptionPane;
类密码{
公共静态void main(字符串[]args){
字符串输入1=“”;
字符串输入2=“”;
int输入长度;
做{
做{
input1=JOptionPane.showInputDialog(null,“输入密码\n必须是6到10个字符,并且\n至少有一个数字和一个字母”);
inputLength=input1.length();
}而(输入长度<6 | |输入长度>10);
input2=JOptionPane.showInputDialog(null,“验证密码”);
}而(!(input1.equals(input2));
showMessageDialog(null,“Success!”);
}
}

您可以处理正则表达式

  • (?=.*\d)表示单词中的最后一位数字
  • (?=.[a-zA-Z])表示至少一个字母
  • {6,10}平均值在6到10个字符之间
因此正确的正则表达式是(?=.\d)(?=[a-zA-Z])。{6,10}

现在看看String:)的`.matches(String regex)方法)

如果无法使用正则表达式:

  • 获取字符集(
    input1.tocharray()
    )并迭代
  • 对于每个字符,检查它是数字还是字符
  • 保留2布尔值(例如num和alpha),并在看到字符数时将其设置为true
然后,看看你的标志,然后测试这个

num&&alpha&&inputLenght>6&&inputLenght<10

编辑:


你可以使用
Character.islitter()
Character.isDigit()
,我想你现在已经有足够的信息了

找到了!我最后添加了两个while循环来检查内部do循环中的数字和字母。我设置while循环使布尔表达式为false,如果找到正确的东西(我知道,它似乎是反向的)。但是,如果找到正确的字符,do循环将不会再次运行。谢谢大家的发帖,这真的帮了大家的忙

以下是完整的代码:

import javax.swing.JOptionPane;
class Password{
   public static void main(String[] args){

      String input1 = "";
      String input2 = "";
      int inputLength;
      boolean isDigit = true;
      boolean isLetter = true;
      char c = ' ';
      char d = ' ';
      int x = 0;

      do{
         do{

            input1 = JOptionPane.showInputDialog(null, "Enter your password\nIt must be 6 to 10 characters and\nhave at least one digit and one letter");

            inputLength = input1.length();

            while(x < input1.length()){
               c = input1.charAt(x);

               if(Character.isDigit(c)){
                  isDigit = false;
                  break;
               }
               x++;
            }

            x = 0;
            while(x < input1.length()){
               d = input1.charAt(x);

               if(Character.isLetter(d)){
                  isLetter = false;
                  break;
               }
               x++;
            }

         }while(inputLength < 6 || inputLength > 10 || isDigit || isLetter);

         input2 = JOptionPane.showInputDialog(null, "Verify Password");

      }while(!(input1.equals(input2)));

      JOptionPane.showMessageDialog(null, "Success!");

   }
}
import javax.swing.JOptionPane;
类密码{
公共静态void main(字符串[]args){
字符串输入1=“”;
字符串输入2=“”;
int输入长度;
布尔值isDigit=true;
布尔值=真;
字符c='';
字符d=“”;
int x=0;
做{
做{
input1=JOptionPane.showInputDialog(null,“输入密码\n必须是6到10个字符,并且\n至少有一个数字和一个字母”);
inputLength=input1.length();
而(x10 | | isDigit | | Isleter);
input2=JOptionPane.showInputDialog(null,“验证密码”);
}而(!(input1.equals(input2));
showMessageDialog(null,“Success!”);
}
}

感谢您指出这是家庭作业,我们可以帮助您找到答案,而不仅仅是提供答案。回答者-请这样做;需要家庭作业帮助的新用户-遵循此示例您是否有正则表达式方面的经验?是否允许您使用正则表达式?如果是,请尝试使用一些基本的正则表达式教程来编写简单的正则表达式,否则,请尝试迭代charArray(input1.toCharArray())并跟踪是否至少有一个数字和一个字母。