programming languages, software development life cycle, c/c++, java, .NET framework, database management system, ORM, Hibernate, website development, & more...

Bạn đang xem: Kiểm tra dữ liệu nhập vào trong java


Chú ý: những đoạn code sau đây được triển khai trên JDK 8

Trong Phần 1, tôi đã giới thiệu cùng với chúng ta về regular expression với các tập kí hiệu cơ bạn dạng, vào phần này, chúng ta đang ứng dụng regular expression vào soát sổ một số trong những dữ liệu cơ bạn dạng như sau:

Kiểm tra dữ liệu người tiêu dùng nhtràn vào có phải là một số trong những nguyên ổn (integer) hay khôngKiểm tra một số nguyên cùng với số lượng kí số cố định và thắt chặt. Ví dụ: yêu cầu đầy đủ 4 số như năm năm ngoái, 1980Kiểm tra một vài nguim cùng với con số kí số về tối tgọi với về tối đa. Ví dụ: nhập tuổi: về tối tđọc là 2 số (bên trên 10 tuổi), đố nhiều là 3 số (Kiểm tra một chuỗi bước đầu bởi một tập kí từ bỏ hoặc số. Ví dụ ID1234, ISBN12312345Kiểm tra một chuỗi ko chứa các kí trường đoản cú quan trọng đặc biệt như !,
, # $,….

Trường phù hợp 1: Kiểm tra một số nguyên

Đây là đoạn công tác bạn cũng có thể dùng để kiểm tra tài liệu người tiêu dùng nhập vào có phải là một số nguyên dương giỏi không:

import java.util.Scanner;public class Demo public static void main(String<> args) boolean flag; Scanner sc = new Scanner(System.in); vày // must be a digit from 0 - 9 String digit = "\d"; System.out.print("Input an integer: "); String input đầu vào = sc.next(); flag = đầu vào.matches(digit); if (!flag) System.out.println("You must enter a number!"); while (!flag); System.out.println("Valid data"); Trong công tác này, chúng ta sẽ sử dụng một vòng lặp vì..while để đề xuất người tiêu dùng nhập vào trong 1 cực hiếm. Lý vì chưng sử dụng do..while là trường hợp người tiêu dùng nhập sai (không hẳn là số ngulặng dương) thì chúng ta từng trải người dùng nhập lại. Do vậy chúng ta đề nghị một biến flag hình trạng boolean để giữ lại đến vòng lặp liên tục chạy hoặc bay ra trường hợp người dùng nhập đúng dữ liệu.

Chúng ta dùng lớp Scanner để lấy tài liệu người tiêu dùng nhập lệ, cho nên các bạn để ý cần import class Scanner từ package java.util.

Do đề xuất là người dùng yêu cầu nhập vào là một vài nguyên, họ có mang mẫu mã là:

String digit = “\d”;

Chụ ý chúng ta buộc phải sử dụng 2 dấu \, vì kí hiệu nguyên lý của regular expression là d, tuy vậy dấu là cam kết tự đặc trưng vào Java, vì thế họ đề xuất cần sử dụng thêm một dấu nữa nhằm trình biên dịch của Java bỏ qua mất vệt này. Nếu ko bọn họ sẽ có được lỗi biên dịch

Trong Phần trước, tôi đang reviews là d thay mặt cho một số nguim tự 0 – 9. Do vậy, họ chỉ việc mẫu mã này là đủ để soát sổ một giá trị có phải là một trong những nguyên ổn hay là không.

Sau Lúc người dùng nhập tài liệu vào, bọn họ điện thoại tư vấn phương thức next() của lớp Scanner để mang dự liệu vào cùng lưu lại vào biến String  input;

Crúc ý tại chỗ này bọn họ ko cần sử dụng phương thức nextInt() để mang tài liệu, do giả dụ người tiêu dùng nhập vào một ký tự thì sẽ có được exception làm cho công tác bị crashed

Lớp String vào Java cung cấp một cách tiến hành là matches(). Phương thơm thức này thừa nhận vào tđam mê số là một mẫu cần kiểm tra, cùng trả về cực hiếm true hoặc false tương ứng với hiệu quả đánh giá.

Dòng code:

flag = đầu vào.matches(digit);

Có nghĩa là cách tiến hành matches() sẽ đánh giá quý giá của đổi mới đầu vào xem gồm khớp cùng với mẫu mã hình thức của trở thành digit giỏi không: giả dụ khớp, Có nghĩa là một số trong những ngulặng, thì trả về true và lưu lại vào đổi mới flag; ngược lại, có nghĩa là cực hiếm của đầu vào chưa hẳn là một vài, thì vẫn trả về false.

Tiếp theo họ chỉ cần chất vấn trường hợp cực hiếm phát triển thành flag là false thì chúng ta in ra câu thông báo: “You must enter a number!”

Và bởi đổi mới flag bây giờ sẽ là false, cùng chúng ta mong mỏi người dùng nhập lại quý hiếm không giống, tức là vòng lặp do..while buộc phải liên tục chạy, vì vậy bọn họ bắt buộc đảo giá trị biến chuyển flag thành true bằng cách thực hiện tân oán tử NOT (!), vì điều kiện để vòng lặp tiếp tục chạy là ĐK lặp bắt buộc là true.

Còn giả dụ ngôi trường thích hợp người tiêu dùng nhập đúng thì quý giá của phát triển thành flag sẽ là true, trong ĐK while có khả năng sẽ bị đảo lại là false, vày vậy vòng lặp vày while cũng biến thành dừng lại.

Chạy chương trình, bọn họ có tác dụng nlỗi sau:

Input an integer: aYou must enter a number!Input an integer: abcYou must enter a number!Input an integer: 1aYou must enter a number!Input an integer: 3Valid dataNếu người dùng không nhập 1 số ngulặng dương thì công tác đã liên tục hỏi cho tới bao giờ nhập đúng thì thôi.

Chạy lại chương trình:

Input an integer: -1You must enter a number!Input an integer: 12You must enter a number!Input an integer:Chụ ý trường hợp người tiêu dùng nhập vào là số âm, ví dụ -1, thì cũng không phù hợp lệ; hoặc nhập vào 2 chữ số, ví dụ 12, thì cũng không hợp lệ, bởi kí hiệu \d chỉ đồng ý một vài nguyên ổn từ 0 đến 9 nhưng thôi.

Muốn nắn nhập nhiều hơn thế nữa một trong những thì chúng ta phải đổi khác chủng loại.

Trường thích hợp 2: Kiểm tra một số trong những nguyên cùng với số lượng kí số cố kỉnh định

Trường hợp này tôi mong người dùng nhập vào buộc phải một vài ngulặng, tuy vậy bắt buộc đúng số lượng kí số.

lấy một ví dụ tôi muốn người dùng nhtràn vào năm và bắt buộc đủ 4 số như 2013, 2015, 1998….

Chúng ta rất có thể cần sử dụng đoạn chương trình sau:

import java.util.Scanner;public class Demo public static void main(String<> args) boolean flag; Scanner sc = new Scanner(System.in); vì String yearPattern = "\d4"; System.out.print("Input a year <4 digits>: "); String input = sc.next(); flag = input đầu vào.matches(yearPattern); if (!flag) System.out.println("Invalid data!"); while (!flag); System.out.println("Valid data"); Cmùi hương trình này cũng tương tự ví dụ trước họ vừa xem. Tôi chỉ đổi khác mẫu mã và giữ vào biến:

String yearPattern = "\d4";

Crúc ý, họ viết số 4 vào cặp vệt ngoặc nhọn theo sau kí từ \d; và không có khoảng white làm sao.

Kí hiệu d tức là người dùng nên nhtràn lên một trong những nguim trường đoản cú 0 đến 9 như chúng ta đang biết

Số 4 vào ngoặc nhọn tức là người tiêu dùng đề xuất nhập đầy đủ 4 số, rất nhiều hơn, ko nhiều hơn. Các chúng ta cũng có thể nạm bằng một số trong những mong ước không giống của chính bản thân mình.

Các đoạn code còn sót lại không tồn tại gì không giống đối với ví dụ trước bắt buộc tôi ko giải thích lại.

Chạy chương trình, họ được hiệu quả nhỏng sau:

Input a year <4 digits>: 12Invalid data!Input a year <4 digits>: 123Invalid data!Input a year <4 digits>: fgdInvalid data!Input a year <4 digits>: 2015Valid dataSố 12: không hợp lệ bởi vì chỉ gồm 2 chữ số

Số 123: không phù hợp lệ vày chỉ có 3 chữ số

Chuỗi “fgd”: không hợp lệ vày chưa phải là số

Số 2015: hợp lệ do đầy đủ 4 chữ số

Trường hợp 3: Kiểm tra một số trong những ngulặng với con số kí số tối thiểu và tối đa.

Trường hòa hợp này họ ước ao người dùng nhtràn lên một số cơ mà hoàn toàn có thể linc hoạt nhập tối tđọc hoặc buổi tối nhiều từng nào kí số.

Ví dụ: nhập tuổi: buổi tối tđọc là 2 số (bên trên 10 tuổi), đố nhiều là 3 số (import java.util.Scanner;public class Demo public static void main(String<> args) boolean flag; Scanner sc = new Scanner(System.in); vày String agePattern = "\d2,3"; System.out.print("Input your age: "); String input = sc.next(); flag = input đầu vào.matches(agePattern); if (!flag) System.out.println("Invalid data!"); while (!flag); System.out.println("Valid data"); Tôi tư tưởng mẫu như sau:

String agePattern = "\d2,3";

 Chúng ta chỉ cần thêm dấy phẩy (,) cùng theo sau là 1 trong những số hướng dẫn và chỉ định số lượng kí số tối đa. Còn số vùng phía đằng trước vết phẩy (,) hướng dẫn và chỉ định kí số buổi tối tđọc cơ mà người tiêu dùng phải nhập.

Trong ví dụ này thì người dùng buộc phải nhtràn lên 1 số ít với về tối tphát âm là 2 chữ số, cùng buổi tối nhiều là 3 chữ số.

Chạy lịch trình, chúng ta được hiệu quả nhỏng sau:

Input your age: 1Invalid data!Input your age: 1001Invalid data!Input your age: 33Valid dataSố 1: chưa hợp lệ do về tối tphát âm phải là 2 chữ số

Số 1001: chưa phù hợp lệ bởi vì buổi tối nhiều là 3 chữ số

Số 33: hòa hợp lệ bởi nằm trong tầm buổi tối tđọc và tối đa

Trường hợp 4: Kiểm tra một chuỗi bước đầu bởi một tập kí tự hoặc số.

Trong ngôi trường phù hợp này, chúng ta thưởng thức người tiêu dùng nhập vào một trong những chuỗi bước đầu bởi một trong những kí từ bỏ, với theo sau là các chữ số nào đó.

Xem thêm: Afp Là Gì? Chỉ Số Afp Bình Thường Là Bao Nhiêu ? Cùng Tìm Hiểu

Ví dụ họ đề xuất người dùng nhtràn vào số ISBN của một cuốn nắn sách cùng với định hình sau:

-      Bắt đầu bởi các kí tự ISBN, viết hoa

-      Theo sau là lốt gạch nối: -

-      Theo sau là 5 số nguyên

Ví dụ: ISBN-12345, ISBN-98765

Chúng ta có thể cần sử dụng đoạn code như sau:

import java.util.Scanner;public class Demo public static void main(String<> args) boolean flag; Scanner sc = new Scanner(System.in); bởi vì String isbnPattern = "ISBN-\d5"; System.out.print("Input ISBN: "); String đầu vào = sc.next(); flag = đầu vào.matches(isbnPattern); if (!flag) System.out.println("Invalid data!"); while (!flag); System.out.println("Valid data"); Tôi có mang chủng loại mang đến số ISBN như sau:

String isbnPattern = "ISBN-\d5";

 Do yên cầu là đề nghị bắt đầu bằng ISBN viết hoa, do thế, chúng ta để nguyên ổn các kí trường đoản cú ISBN viết hoa vào trong mẫu mã. Như vậy Có nghĩa là người dùng đề xuất nhập đúng ISBN, theo sau là dấu gạch ốp nối (-)

tiếp đến, theo sau cần là 5 số, thì chúng ta sử dụng \d5.

Chạy chương trình, họ gồm kết quả nlỗi sau

Input ISBN: ISBN12345Invalid data!Input ISBN: isbn-12345Invalid data!Input ISBN: ISBN-12345Valid dataChuỗi ISBN12345: chưa phù hợp lệ do không tồn tại lốt gạch men nối (-) sau chuỗi ISBN

Chuỗi isbn-12345: chưa hợp lệ vì isbn viết thường xuyên, đề nghị đề xuất viết hoa tất cả kí tự