Cài đặt chương trình thực hiện những chức năng trên chủ yếu dùng kiến thức về java core. Sử dụng các thuộc tính và các phương thức của lớp vào ra chuẩn (java.io.*;) là lớp (java.lang.String;).
Khi người dùng nhập vào tên file cần đọc, một đối tượng BufferedReader được khởi tạo để lưu tên file nhập vào. Yêu cầu định dạng của file nhập vào phải là file *.java. Kiểm tra phần mở rộng của file dùng hàm:
object. endsWith(“.java”)
Yêu cầu tiếp theo người dùng cần nhập vào tên file sẽ lưu toàn bộ các câu lệnh điều khiển của file cần đọc.
đối tượng BufferedReader để lưu tên file nhập vào hàm createNewFile () để tạo file với tên vừa nhập
sử dụng boolean exist=fout.createNewFile() để kiểm tra tên file vừa nhập vào đã tồn tại hay chưa.
Đọc file : sử dụng các lớp FileInputStream, DataInputStream và
BufferedReader. Chúng tôi sẽ tiến hành đọc từng dòng trong file sử dụng hàm
readLine(). Duyệt toàn bộ file cho tới khi gặp dòng rỗng (null). Khi đọc từng dòng sẽ tiến hành đọc từng ký tự lưu vào một mảng kiểu char (mảng token[]). Câu lệnh rẽ nhánh if sẽ có dạng if(biểu thức logic boolean). Chúng tôi sẽ tiến hành so sánh phần tử thứ (i) trong mảng char token[], nếu như token[i] = = ‘i’ và token[i+1]= = ‘f’ thì sẽ thực hiện vòng lặp để in cả câu lệnh if đó ra file lưu trữ. Để làm được điều này chúng tôi sử dụng hàm charAt(i) để chuyển phần tử thứ (i) thành kiểu char, dùng đối tượng thuộc lớp
BufferedWriter để ghi ra file lưu trữ.Việc tìm kiếm câu lệnh while và for cũng tương tự như thực hiện với câu lệnh if. Đối với câu lệnh while tiến hành so sánh nếu tất cả các phần tử có dạng sau sẽ in ra câu lệnh while:
• token[i]= = ‘w’ • token[i+1]= = ‘h’ • token[i+2]= = ‘i’ • token[i+3]= = ‘l’ • token[i+4]= = ‘e’
Một dòng lệnh là câu lệnh for thì các phần tử trong dòng đang đọc phải có dạng như sau : • token[i]= = ‘f’
• token[i+1]= = ‘o’ • token[i+2]= = ‘r’
Khai báo các biến đếm count_if, count_while, count_for, mỗi lần một câu lệnh điều khiển được tìm thấy các biến đếm này sẽ được tăng lên một theo đúng loại câu if hay while hay for.
Người dùng muốn tiếp tục thao tác. Cần phải nhập vào “Yes”, muốn thoát phải nhập vào “No”. Nếu xâu nhập vào là “Yes” sẽ thực thi khối lệnh tiếp theo: hỏi người dùng lựa chọn loại câu lệnh điều khiển sẽ thao tác. Nếu người dùng muốn thao tác câu lệnh if thì nhập vào if , khi muốn thao tác trên while nhập vào while và nếu là for thì cần nhập vào for. Để biết người dùng đã nhập vào những lựa chọn nào sẽ dùng đến đối tượng lớp
BufferedReader để đọc, hàm so sánh xâu equals(String object) . Người dùng chọn câu lệnh muốn thao tác bằng cách nhập vào một số nguyên (kiểu int). Để lấy ra đúng câu lệnh
là số thứ tự mà người dùng vừa nhập sẽ phải dùng đến đối tượng kiểu
LineNumberReader và gọi đến hàm getLineNumber().
Giá trị biên trong các dải giá trị của biến luôn nằm đằng sau các toán tử so sánh >, >=, <, <= do đó thuật toán để lấy ra các giá trị biên trong các câu lệnh điều khiển sẽ là tiến hành đọc qua file, đọc từng dòng một, xét câu lệnh đó có phải là câu lệnh điều khiển hay không, nếu là câu lệnh điều khiển sẽ lấy ra xâu đằng sau các toán tử so sánh trên. Duyệt qua file và đọc từng ký tự về cách làm tương tự như đã làm ở trên.