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.