1. 程式人生 > >利用自定義的異常驗證郵箱合法性(不使用正則)

利用自定義的異常驗證郵箱合法性(不使用正則)

不用正則表示式,驗證郵箱合法性
a、本地驗證---驗證的是郵箱與密碼的格式 --郵箱: 
        1、要有@ . 2、@ . 前後不能為空 3、@要在 . 的前面 
        4、@前面的長度至少是10,包含數字,字母,且必須有大寫字母   
 b:網路驗證---驗證的是郵箱與密碼與伺服器儲存的是否相同
public class UserEmail {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 使用者
        System.out.println("請輸入郵箱號"
); String user = sc.nextLine(); Email mail = new Email(user); try { mail.emilHeFa(); System.out.println("郵箱正確"); // 密碼 System.out.println("請輸入密碼"); String pw = sc.next();// 密碼不能有空格 PassWord passWord = new PassWord(pw); try
{ passWord.passWord(); System.out.println("密碼正確"); } catch (SeverPassWordException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } catch (NUmException e) { e.printStackTrace(); } catch
(WeikongException e) { e.printStackTrace(); } catch (OrderException e) { e.printStackTrace(); } catch (LengthException e) { e.printStackTrace(); } catch (SeverUserException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } class NUmException extends Exception { // 第一種異常:沒有 @ 。 public NUmException() { super(); } public NUmException(String message) { super(message); } } class WeikongException extends Exception { // 第二種 @ 。 前後不能為空 public WeikongException() { super(); } public WeikongException(String message) { super(message); } } class OrderException extends Exception { // 第三種 @在。的前面 public OrderException() { super(); } public OrderException(String message) { super(message); } } class LengthException extends Exception { // 第四種 @前面的長度至少是10,包含數字,字母,且必須有大寫字母 public LengthException() { super(); } public LengthException(String message) { super(message); } } class SeverUserException extends Exception { // 伺服器使用者校驗 public SeverUserException() { super(); } public SeverUserException(String message) { super(message); } } class SeverPassWordException extends Exception { // 伺服器密碼校驗 public SeverPassWordException() { super(); } public SeverPassWordException(String message) { super(message); } } class Email { private String mail; public Email(String mail) { this.mail = mail; } public String getMail() { // get set 方法 return mail; } public void setMail(String mail) { this.mail = mail; } public void emilHeFa() throws NUmException, WeikongException, OrderException, LengthException, SeverUserException { // 第一種異常:沒有 @ 。 if (!(mail.contains("@") && mail.contains("."))) { throw new NUmException("沒有 @ ."); } // 第二種 @ 。 前後不能為空 if (mail.contains(" ") || mail.endsWith(".") || !shunXu(mail)) { throw new WeikongException("@和.前後不能為空"); } // 第三種 @在。的前面 if (mail.indexOf("@") > mail.indexOf(".")) { throw new OrderException("格式不正確"); } // 第四種 @前面的長度至少是10,必須有大寫字母 包含數字,字母 if (mail.indexOf("@") < 10 && !(bigLetter(mail)) || ((numLetter(mail) && mail.indexOf("@") < 10 && !(bigLetter(mail))))) { // 保證全是大寫也可以 throw new LengthException("@前面的長度至少是10,包含數字,字母且必須有大寫字母"); } // 假裝和伺服器使用者匹配 UAP c = new UAP(); String us = c.user; if (!(mail.equals(us))) { throw new SeverUserException("使用者名稱錯誤"); } System.out.println("使用者正確"); } //判斷@ 和 。 之間為空? public boolean shunXu(String user) { if ((mail.indexOf(".") - mail.indexOf("@") >1)) { return true; } return false; } // 包含數字,字母 public boolean numLetter(String user) { for (int i = 0; i < user.length(); i++) { char a = user.charAt(i); // 返回指定索引的值 if (a >= 97 && a <= 122 || a >= 0 && a <= 9) { // 有小寫字母或數字 有返回true 沒有則false return true; } } return false; } // 必須有大寫字母 public boolean bigLetter(String user) { for (int i = 0; i < user.length(); i++) { // 遍歷 char a = user.charAt(i); if (a >= 65 && a <= 90) { // 有大寫字母返回true 沒有則false return true; } } return false; } } class PassWord { // 與伺服器密碼匹配 private String pw; public PassWord(String pw) { this.pw = pw; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public void passWord() throws SeverPassWordException { // 假裝去伺服器驗證密碼 UAP c = new UAP(); String mi = c.pw; if (!(pw.equals(mi))) { throw new SeverPassWordException("使用者密碼不正確"); } System.out.println("密碼通過"); } } class UAP { // 假裝一個伺服器 public static String user = "[email protected]"; public static String pw = "1234567"; }