Video: Hướng dẫn cài đặt Ứng dụng đọc hồ sơ khai thuế XML iTaxViewer và Java Plugin 2025
Trong danh sách mã Java này, phương pháp payOneEmployee minh họa một số thủ thuật hữu ích để đọc dữ liệu. Cụ thể, mỗi máy quét mà bạn tạo có một phương pháp nextLine. (Bạn có thể không sử dụng phương pháp nextLine này, tuy nhiên phương pháp này vẫn có sẵn.)
Khi bạn gọi phương thức nextLine của máy quét, phương pháp sẽ nắm bắt tất cả mọi thứ đến cuối dòng văn bản hiện tại. Trong danh sách này, một cuộc gọi đến nextLine có thể đọc toàn bộ dòng từ EmployeeInfo. txt file. (Trong chương trình khác, cuộc gọi nextLine của máy quét có thể đọc mọi thứ người dùng gõ trên bàn phím đến khi nhấn phím Enter)
nhập khẩu java. util. Máy quét; nhập khẩu java. io. Tập tin; nhập khẩu java. io. IOException; public class DoPayroll {public static void main (String args []) ném IOException {Máy quét ScanScanner = máy quét mới (mới File ("EmployeeInfo. txt")); cho (int empNum = 1, empNum <= 3, empNum ++) (payOneEmployee (diskScanner);} diskScanner. đóng ();} static void payOneEmployee (Máy quét aScanner) {Nhân viên anEmployee = nhân viên mới (); một nhân viên. setName (aScanner. nextLine ()); một nhân viên. setJobTitle (aScanner. nextLine ()); một nhân viên. cutCheck (aScanner. nextDouble ()); Một máy quét. nextLine ();}}
Lưu ý lựa chọn cẩn thận của từ: nextLine đọc mọi thứ đến cuối dòng hiện tại. Thật không may, ý nghĩa của việc đọc đến cuối dòng hiện tại là không phải lúc nào bạn nghĩ nó có ý nghĩa. Intermingling nextInt, nextDouble, và các cuộc gọi tiếp theo có thể lộn xộn. Bạn phải xem những gì bạn đang làm và kiểm tra đầu ra của chương trình của bạn một cách cẩn thận.
Để hiểu tất cả điều này, bạn cần phải nhận thức được đau đớn về những ngắt dòng dữ liệu. Hãy suy nghĩ của một ngắt dòng như một nhân vật phụ, bị mắc kẹt giữa một dòng văn bản và tiếp theo. Sau đó hãy tưởng tượng rằng cuộc gọi nextLine có nghĩa là đọc mọi thứ và bao gồm cả ngắt dòng tiếp theo.
Bây giờ hãy nhìn vào con số này.
-
Nếu một cuộc gọi đến nextLine đọc Barry Burd [LineBreak], cuộc gọi tiếp theo tới nextLine sẽ đọc CEO [LineBreak].
-
Nếu một cuộc gọi đến nextDouble đọc số 5000. 00, cuộc gọi tiếp theo tới nextLine sẽ đọc [LineBreak] đến ngay sau số 5000. 00. (Đó là tất cả các dòng lệnh nextLine - một [LineBreak] và không có gì nhiều hơn.)
-
Nếu một cuộc gọi đến nextLine đọc [LineBreak] sau khi số 5000. 00, cuộc gọi tiếp theo đến nextLine đọc Harriet Ritter [LineBreak].
Vì vậy, sau khi đọc số 5000. 00, bạn cần hai cuộc gọi đến nextLine để lấy tên Bạn có thể ngạc nhiên bởi số quirks mà bạn tìm thấy trong mỗi phương pháp quét của ngôn ngữ lập trình. Ví dụ, dòng tiếp theo đầu tiên đọc từ tập tin trong hình vẽ devour Barry Burd [LineBreak] từ tệp tin. Nhưng cuộc gọi nextLine này cung cấp Barry Burd (không có bất kỳ ngắt dòng nào) đến mã chạy. Vì vậy, nextLine tìm kiếm một ngắt dòng, và sau đó nextLine mất đường ngắt. Vâng, đây là một điểm tinh tế. Và không, điểm huyền bí này hầu như không gây ra vấn đề cho bất cứ ai. Nếu doanh nghiệp này liên quan đến kế tiếpDouble và nextLine sẽ làm bạn bối rối, vui lòng không đổ lỗi cho Java. Trộn các cuộc gọi đầu vào là công việc tinh tế trong bất kỳ ngôn ngữ lập trình máy tính. Và điều thực sự khó chịu là mỗi ngôn ngữ lập trình tiếp cận vấn đề một chút khác nhau. Những gì bạn tìm hiểu về nextLine trong Java giúp bạn hiểu các vấn đề khi bạn biết C ++ hoặc Visual Basic, nhưng nó không cho bạn biết tất cả các chi tiết. Chi tiết của từng ngôn ngữ là duy nhất cho ngôn ngữ đó.