THÂN CHÀO QUÝ BẠN
Blogger nầy chỉ tồn trử kiến thức và kinh nghiệm về nghề “Materials Testing”, “Textile Screen Printing” và “Internet Programming” của một kỹ sư đã phục vụ tại :
* Trung Tâm Khảo sát Kỹ Thuật Quân Nhu /QLVNCH “ & “ Viện Quốc Gia Định Chuẩn/VNCH”
* Xí nghiệp “Hiệp Hưng / VN” ( sãn xuất giày vãi cao su )
"Bradbury Company Inc/USA"(Textile Screenprinting,Imprinted Sportswear Programs) & “Sundance Graphics Inc / USA” ( in bông vãi sợi ) từ năm 1965 để dành cho thế hệ trẻ muốn học nghề.
Vạn Vật Thái Bình (PEACE ON EARTH).

Monday, May 4, 2015

HOW TO USE JAVA FORMATTING

Xử dụng Java Formatter f = new Formatter(System.out) & System.out.printf() Method.

* Formatter f = new Formatter(System.out) của Formatter class chứa trong Java 1.5 có nhiệm vụ tự động sắp đặt vị trí và điều chỉnh khoảng cách ( auto padding ) của chữ viêt và các con số theo ý chúng ta.
Vì chúng ta dùng Formatter để ouput PrintStream bytes nên Formatter phải có chứa  System.out .
public void printTitle(){  }  Để viết đầu đề headers và vẽ đường ngăn cách
public void print(){  }        Để viết tên món hàng, số lượng, giá cả
public void printTotal(){  } Để viết tổng cộng các món hàng, tổng cộng giá của các món hàng, tax .
*  public static void main(String[] args){  } Để vận hành receipt program.
 Dấu % nghĩa là bắt đầu formatting expression.
 Dấu %10 nghĩa là cần có một khoảng rộng 10 byte field (The value of field width is 10).Mỗi byte field là một chữ character.
 Dấu %10d. Sau byte field phải có một trong những chữ sau.
 s dùng cho string, d dùng cho decimal interger, f dùng cho floating point, t dùng cho time,date vv…
 %-15s : chọn dấu tr̀ư khi chúng ta lấy bên trái làm chuẩn cho output (left-justify).
 %10.2s : chỉ lấy 2 chữ số. %10.1s : chỉ lấy một chữ số. %10.0s : không lấy chữ số nào hết nghĩa là bỏ trống
Dấu  \n  gọi là escape sequence hay new line .
Muốn có con số tổng cộng các món hàng thì phải viết total += qty                                        
Muốn có con số tổng cộng giá cả của tất cả các  món hàng thì phải viết total += price                                        
Muốn có Total Tax cho tất cả các món hàng thì phải viết : final price * (1+TAX_RATE) mới cho kết quả đúng.
Thí dụ.
     double item1price = 10.25,item2price = 5.25,item3price = 2.25;
     double finalprice = (item1price+item2price+item3price)*(1+TAX_RATE);
 System.out.println("Your total purchase is:"+finalprice+" with tax.");
Output. Your total purchase is:19.17 with tax.


                                  ---------------------
Hai thí dụ sau đây giúp chúng ta biết cách xử dụng Java formatting để trình bày một bảng thống kê về kết quả thử nghiệm máu cho nên không không xử dụng những code về tổng cộng và sale tax
                                  ----------------------
Method 1. Cần có private Formatter f = new Formatter(System.out);

class Rextester{
private Formatter f = new Formatter(System.out);
public void printTitle(){
f.format("%-15s %10s %15s %15s\n", "YEAR","GLUCOSE","CHOLESTEROL","TRIGLYCERIDES");
f.format("%-15s %10s %15s %15s\n", "----","----" ,"----","----");}
public void print(String name, int qty, int chole,int trigly){
 f.format("%-15s %10d %15d %15d\n", name, qty, chole,trigly);}
public static void main(String[] args){
 System.out.println("DUONG, HENRY H" );
 System.out.println("BLOOD TEST PERFORMED AT SAN CLEMENTE HOSPITAL CA 92672" ); 
       Rextester result = new Rextester();
       result.printTitle();
       result.print("2012", 90, 191,86);
       result.print("2013", 94, 184, 131);
       result.print("2014", 91, 168, 124);
       result.print("2015", 87, 172, 114);
 System.out.println("Daily food : 80 percent vegetables of different kinds" );
    }}
SUCCESS.
Compilation time: 0.94 sec, absolute running time: 0.13 sec,
 cpu time: 0.09 sec, memory peak: 22 Mb, absolute service time: 1.07 sec
DUONG, HENRY H
BLOOD TEST PERFORMED AT SAN CLEMENTE HOSPITAL CA 92672
YEAR               GLUCOSE     CHOLESTEROL   TRIGLYCERIDES
----                  ----            ----            ----
2012                    90             191              86
2013                    94             184             131
2014                    91             168             124
2015                    87             172             114
Daily food : 80 percent vegetables of different kinds
 
Permanent link: http://rextester.com/PKBZ60989

Method 2 . Không cần Formatter f = new Formatter(System.out) nhưng cần có :
* System.out.printf() method.
* Tất cả functions/methods đều phải có public static.
System.out.printf() là một formatting method của PrintStream class chứa trong java.io package.

PrintSteam class có 2 formatting methods là System.out.printf() và System.out.format() để thay thế  System.out.println()

class Rextester{ 
public static void printTitle(){
System.out.printf("%-15s %10s %15s %15s\n", "YEAR","GLUCOSE","CHOLESTEROL","TRIGLYCERIDES");
System.out.printf("%-15s %10s %15s %15s\n", "----","----" ,"----","----");}
public static void print(String name, int qty, int chole,int trigly){
System.out.printf("%-15s %10d %15d %15d\n", name, qty, chole,trigly);}
public static void main(String[] args){
 System.out.println("DUONG, HENRY H" );
 System.out.println("BLOOD TEST PERFORMED AT SAN CLEMENTE HOSPITAL CA 92672" ); 
       printTitle();
       print("2012", 90, 191,86);
       print("2013", 94, 184, 131);
       print("2014", 91, 168, 124);
       print("2015", 87, 172, 114);
 System.out.println("Daily food : 80 percent vegetables of different kinds" );
 }}

*  Xử dụng System.out.printf() Method.Có output như sau.
SUCCESS.
Compilation time: 0.94 sec, absolute running time: 0.24 sec,
cpu time: 0.13 sec, memory peak: 22 Mb, absolute service time: 1.18 sec
DUONG, HENRY H
BLOOD TEST PERFORMED AT SAN CLEMENTE HOSPITAL CA 92672
YEAR               GLUCOSE     CHOLESTEROL   TRIGLYCERIDES
----                  ----            ----            ----
2012                    90             191              86
2013                    94             184             131
2014                    91             168             124
2015                    87             172             114
Daily food : 80 percent vegetables of different kinds

*  Xử dụng Formatter. Có output như sau.
Compilation time: 0.94 sec, absolute running time: 0.13 sec,
 cpu time: 0.09 sec, memory peak: 22 Mb, absolute service time: 1.07 sec.
DUONG, HENRY H
BLOOD TEST PERFORMED AT SAN CLEMENTE HOSPITAL CA 92672
YEAR               GLUCOSE     CHOLESTEROL   TRIGLYCERIDES
----                  ----            ----            ----
2012                    90             191              86
2013                    94             184             131
2014                    91             168             124
2015                    87             172             114
Daily food : 80 percent vegetables of different kinds
 
Permanent link: http://rextester.com/PKBZ60989


NHẬN XÉT VÀ SO SÁNH 2 METHODS.

Chúng ta thấy 2 outputs giống hệt  nhau.
* Nếu không xử dụng Formatter thì cpu time nhiều hơn,running time nhiều hơn,service time nhiều hơn.
* CPU time là thời gian CPU cần có để chuyển đổi instructions của program cho computer hay cho operating system.
Trong lúc program đang vận hành,CPU vẫn có những lúc nghĩ ngơi goị sitting idle để computer đón nhận data từ keyboard hay disk hoặc gửi data tới máy in.Đó là lý do cpu time luôn ít hơn thời gian vận hành program goị là running time.
Khi sọan một một program cần chú ý tới running time càng ít càng tốt bằng cách lựa chọn những code ít memory.