Как мне разобрать данные, которые я получил, разбив строку на значения Int в Java? - PullRequest
0 голосов
/ 04 ноября 2019

Я разделил строку, которая является паролем, введенным пользователем, чтобы возвращать только цифры назад. Мне нужно убедиться, что введенные цифры не являются определенными. Но сначала мне нужно взять данные, которые возвращаются, и превратить их в 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;   
  }

Когда я запускаю программу, я возвращаю 0 (и цифры в строковом пароле) в подвохе, так что попытка не работает, я думаю?

1 Ответ

0 голосов
/ 04 ноября 2019

В вашем коде вы устанавливаете upPass в 0, когда встречаете подстроку, которая не содержит цифр. Это пустых строки . Это происходит, когда пароль не начинается с цифры.

Вы должны игнорировать его, поскольку вам нужны только цифры.

Пример: abcd12356zz33 - при разделении с использованием регулярного выражения [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
...