有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组如何解析通过在Java中将字符串拆分为Int值而获得的数据?

我拆分了一个字符串,它是用户输入的密码,只返回数字。我需要确保他们输入的数字不是特定的数字。但首先,我需要将返回的数据转换成整数,以便进行比较

public static boolean checkPassword(String password){
      String digitsRegrex = "[a-zA-Z]+";
      int upPass;

      String [] splitPass = password.split("[a-zA-Z]+");
      for(String pass : splitPass){
         try{
            upPass = Integer.parseInt(pass);
         }
         catch (NumberFormatException e){
            upPass = 0;
         }       
         System.out.println(upPass);
      }  
      return true;   
  }

当我运行这个程序时,我得到了catch中的0(以及字符串密码中的数字),所以我猜尝试不起作用了


共 (1) 个答案

  1. # 1 楼答案

    在代码中,当遇到不包含任何数字的子字符串时,将upPass设置为0。这些是空字符串。当密码不是以数字开头时会发生这种情况

    你应该忽略它,因为你只需要数字

    例如:abcd12356zz33当您使用regex [a-zA-Z]+进行拆分时,会得到"""123456""33"。当您尝试将第一个空字符串转换为一个数字时,会得到一个NumberFormatException

    for(String pass : splitPass){
        if (!pass.isEmpty()) {
            try {
                upPass = Integer.parseInt(pass);
                System.out.println(upPass);
                //Validate upPass for the combination of numbers
            } catch (NumberFormatException e) {
                throw e;
            }
        }
    }
    

    checkPassword("abcd12356zz33")
    

    印刷品

    12356
    33