Проверка пароля, проверка и требования - PullRequest
0 голосов
/ 23 мая 2018

У меня проблема, которая требует как минимум 2 заглавные буквы, как минимум 2 строчные буквы и 2 цифры.

Вот точная проблема:

Напишите приложение, которое запрашивает у пользователя пароль, который содержит как минимум две заглавные буквы, как минимум две строчные буквы и как минимум две цифры,После ввода пароля отобразите сообщение, указывающее, был ли пользователь успешным или причина его неуспешна.

Например, если пользователь вводит «Пароль», ваша программа должна вывести: Ваш пароль был недействителен дляследующие причины: прописные буквы, цифры

Если пользователь вводит «P4SSw0rd», ваша программа должна вывести: действительный пароль

Вот мое кодирование до сих пор, у меня проблема свключая выходные строки.Например, если у кого-то нет 2 заглавных букв И нет 2 букв.При написании 1 буквы в вывод не включаются оба сбоя.

import java.util.Scanner;
public class ValidatePassword {
  public static void main(String[] args) {
    String inputPassword;
    Scanner input = new Scanner(System.in);
    System.out.print("Password: ");
    inputPassword = input.next();
    System.out.println(PassCheck(inputPassword));
    System.out.println("");
  }

  public static String PassCheck(String Password) {
    String result = "Valid Password";
    int length = 0;
    int numCount = 0;
    int capCount = 0;
    for (int x = 0; x < Password.length(); x++) {
      if ((Password.charAt(x) >= 47 && Password.charAt(x) <= 58) || (Password.charAt(x) >= 64 && Password.charAt(x) <= 91) ||
        (Password.charAt(x) >= 97 && Password.charAt(x) <= 122)) {
      } else {
        result = "Password Contains Invalid Character!";
      }
      if ((Password.charAt(x) > 47 && Password.charAt(x) < 58)) {
        numCount++;
      }
      if ((Password.charAt(x) > 64 && Password.charAt(x) < 91)) {
        capCount++;
      }
      length = (x + 1);
    }
    if (numCount < 2) {
      result = "Not Enough Numbers in Password!";
    }
    if (capCount < 2) {
      result = "Not Enough Capital Letters in Password!";
    }
    if (length < 2) {
      result = "Password is Too Short!";
    }
    return (result);
  }
}

1 Ответ

0 голосов
/ 23 мая 2018

Если я правильно понимаю, что вы хотите сделать, когда вы вводите, например, «Пароль», у вас нет 2 заглавных букв и 2 цифр, поэтому ваш вывод должен выглядеть так: «Не достаточно цифр в пароле! Не достаточно заглавных букв вПароль!".Я предлагаю 2 решения:

  1. Если вы хотите добавить одну строку в другое использование +, потому что вы перезаписываете первое значение результата другим.Но это не лучшее решение, потому что каждый раз, когда вы добавляете значение в строку, вы создаете новую строку в пуле строк.Больше информации здесь: https://stackoverflow.com/a/1553110/6003541

    result += "Password is Too Short!";
    

    или

    result = result + "Password is Too Short!";
    
  2. Я предлагаю использовать StringBuilder.Используйте метод "append", чтобы добавить свой результат и в конце вернуть значение toString () объекта StringBuilder.

    StringBuilder sb = new StringBuilder(); 
    if (numCount < 2) {
      sb.append("Not Enough Numbers in Password!");
      sb.append(System.getProperty("line.separator"));
    }
    if (capCount < 2) {
      sb.append("Not Enough Capital Letters in Password!");
      sb.append(System.getProperty("line.separator"));
    }
    if (length < 2) {
      sb.append("Password is Too Short!");
    }
    
    return sb.toString();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...