Как мне потребовать, чтобы адрес электронной почты имел @ и пароль длиной более 5 символов, но ниже 15 - PullRequest
0 голосов
/ 10 сентября 2018

Мой текущий код:

import java.io.*;
import java.security.acl.NotOwnerException;
import java.util.Scanner;

class Main {

  public static void main(String args[])
  {

    System.out.print("Enter username: ");
    Scanner scanner = new Scanner(System.in);
    String username = scanner.nextLine();


    System.out.print("Enter email: ");
    Scanner scanner2 = new Scanner(System.in);
    String email = scanner.nextLine();


    System.out.print("Enter password: ");
    Scanner scanner3 = new Scanner(System.in);
    String password = scanner.nextLine();





    try(FileWriter fw = new FileWriter("passwords.txt", true);
    BufferedWriter bw = new BufferedWriter(fw);
    PrintWriter out = new PrintWriter(bw))
{
    out.print(username);
    out.print(":");
    out.print(email);
    out.print(":");
    out.print(password);
    out.println("");
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}
  }
}

Я хочу, чтобы String email! = Заканчивался @ gmail.com или @ yahoo.com и т. Д.Но также требуют, чтобы их имена были только цифрами и буквами.Я также хочу, чтобы у пользователей был пароль длиной более 5 символов, но не более 15, при этом допускались только буквы и цифры.Я также хочу, чтобы имя пользователя было более 3-х символов и менее 13-ти, а также только цифры и буквы.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Ваши спецификации мне не совсем понятны, но, насколько я понимаю, этот код должен работать:

// username should be an alphanumeric string of length 4 to 12.
username.matches("[\\p{Alnum}]{4,12}");
// email should be alphanumeric characters followed by an '@' symbol followed by a domain name.
// The standard domain name specification allows for alphanumeric characters or a hyphen as long as the hyphen doesn't start or end the domain name.
email.matches("[\\p{Alnum}]+@[\\p{Alnum}]+(-[\\p{Alnum}]+)*(\\.[\\p{Alnum}]+(-[\\p{Alnum}]+)*)+");
// password should be an alphanumeric string of length 6 to 14.
password.matches("[\\p{Alnum}]{6,14}");
0 голосов
/ 10 сентября 2018
  1. Чтобы проверить, содержит ли какой-либо адрес электронной почты символ @, это просто: if (!email.contains("@")) System.out.println("Hey, now, emails do at least contain an @, you know!");

  2. Чтобы проверить, составляет ли длина строки от 5 до 15, скажем, включительно, потому что вы не указали: if (passw.length() < 5 || passw.length() > 15) System.out.println("5 to 15 characters please!"); - обратите внимание, как уже говорили другие, ограничение длины пароля является немым. Есть причины для этого , но все они плохие . Так что просто не делай этого. Я предполагаю, что это домашнее задание. Все еще раздражает видеть, что вопросы домашней работы заставляют писать чек, который является общим тупым движением промышленности. Подробнее читайте о хешировании паролей, b-crypt, TOTP и т. Д.

  3. Правильный способ обработки ошибок здесь - это прикрепить throws Exception к своему основному, например, так: public static void main(String[] args) throws Exception { ... } ... по крайней мере, для любого исключения, когда вы не знаете, как его обработать (и ведите журнал и игнорируйте, что не обрабатывает исключение должным образом. Если это все, что вы можете с ним разумно сделать, то не делайте этого, и просто придерживайтесь этих бросков, как указано).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...