MỤC TIÊU
Kết thúc bài thực hành này bạn có khả năng sử dụng phương thức tĩnh để xây
dựng một thư viện các hàm tiện ích phục vụ cho các thao tác xử lý nhanh sau
này.
1. Phương Thức Tham Số Biến Đổi
Với các viết cũ, ví dụ có các phương thức tính tổng của 2, 3, 4,...
public static int tinhTong(int a, int b){ // tổng 2 số
return a + b;
}
public static int tinhTong(int a, int b, int c){ // tổng 3 số
return a + b + c;
}
public static int tinhTong(int a, int b, int c, int d){ // tổng 4 số
return a + b + c + d;
}
Với code trên khi cần tính tổng của 5 số thì sẽ bị lỗi vì hàm tính tổng 5 số chưa được định nghĩa
Vì vậy có các viết khác tương đương với cách viết trên nhưng
tham số truyền vào linh động hay
có thể biến đổi
public static final int tinhTong(int ...x){
int tong = 0;
for (int i = 0; i < x.length; i++){
tong += x[i];
}
return tong;
}
Hoặc cách viết khác
public static final int tinhTong(int ...x){
int tong = 0;
for (int i: x){
tong += i;
}
return tong;
}
Ví dụ đầy đủ:
package Bai8;
/**
*
* @author khanhvc
*/
public class PhuongThuc {
/*
public static int tinhTong(int a, int b){
return a + b;
}
public static int tinhTong(int a, int b, int c){
return a + b + c;
}
public static int tinhTong(int a, int b, int c, int d){
return a + b + c + d;
}
public static final int tinhTong(int ...x){
int tong = 0;
for (int i = 0; i < x.length; i++){
tong += x[i];
}
return tong;
}
*/
public static final int tinhTong(int ...x){
int tong = 0;
for (int i: x){
tong += i;
}
return tong;
}
public static void main(String[] args) {
int tong2 = tinhTong(1, 2);
System.out.println("Tong " + tong2);
int tong3 = tinhTong(1, 2, 3);
System.out.println("Tong " + tong3);
int tong5 = tinhTong(1, 2, 3, 4, 5);
System.out.println("Tong " + tong5);
int mang[] = {1, 2, 3, 4, 5};
int tongMang = tinhTong(mang); // có thể truyền vào 1 mảng
System.out.println("Tong mang: " + tongMang);
}
}
YÊU CẦU:
Tạo lớp final có tên là XPoly và bổ sung các phương thức tĩnh và viết mã
theo yêu cầu của các bài sau đây.
Bài 1:
Thêm một phương thức tĩnh có tên là sum() với tham số biến đổi kiểu
double. Viết mã cho phương thức này để thực hiện tính tổng các tham
số truyền vào.
Bài 2:
Bổ sung thêm 2 phương thức tĩnh để tìm số lớn nhất và nhỏ nhất từ tham
số biến đổi
Bài 3:
Bổ sung thêm 1 phương thức tĩnh toUpperFirstChar(String s) để chuyển
đổi các ký tự đầu tiên của mỗi từ sang ký tự hoa. Ví dụ: “nguyen
van teo” sẽ đổi thành “Nguyen Van Teo”.
Bài 4:
Viết chương trình sử dụng các phương thức tiện ích đã xây dựng
trong lớp XPoly ở trên.
THỰC HIỆN:
Tạo lớp final có tên là XPoly (nội dung lớp gồm bài 1, 2, 3) và bổ sung các phương thức tĩnh và viết mã theo yêu cầu của các bài sau đây.
- Bài 1
- Bài 2
- Bài 3
- Bài 4
Thêm một phương thức tĩnh có tên là sum() với tham số biến đổi kiểu double. Viết mã cho phương thức này để thực hiện tính tổng các tham số truyền vào.
public static final double tinhTong(double ...thamSo){
double tong = 0;
for (double x: thamSo){
tong += x;
}
return tong;
}
Bổ sung thêm 2 phương thức tĩnh để tìm số lớn nhất và nhỏ nhất từ tham số biến đổi
public static final double timMax(double ...thamSo){ // tìm số lớn nhất
double max = thamSo[0];
for (double x: thamSo){
if ( x > max)
max = x;
}
return max;
}
// bai 2
public static final double timMin(double ...thamSo){ // tìm số nhỏ nhất
double min = thamSo[0];
for (double x: thamSo){
if ( x < min)
min = x;
}
return min;
}
Bổ sung thêm 1 phương thức tĩnh toUpperFirstChar(String s) để chuyển đổi các ký tự đầu tiên của mỗi từ sang ký tự hoa. Ví dụ: “nguyen van teo” sẽ đổi thành “Nguyen Van Teo”.
public static String ghiHoaKyTuDau(String motTu){ // Ghi hoa ký tự đầu tiên của một chuỗi
return motTu.substring(0, 1).toUpperCase() + motTu.substring(1).toLowerCase();
}
public static String ghiHoaKyTuDauTienMoiTu(String chuoi){
String chuoiMoi="";
String [] mangMotTu = chuoi.split(" ");
for (String motTu: mangMotTu ){
// chuoiMoi += ghiHoaKyTuDau(motTu) + " "; // nối chuỗi theo cách thông thường
chuoiMoi += ghiHoaKyTuDau(motTu).concat(" "); // nối chuỗi theo kiểu sử dụng hàm concat
}
return chuoiMoi;
}
Viết chương trình sử dụng các phương thức tiện ích đã xây dựng trong lớp XPoly ở trên.
package Bai_8;
/**
*
* @author khanhvc
*/
public class Bai_8 {
public static void main(String[] args) {
System.out.println("Tong " + XPoly.tinhTong(1, 2, 3, 4, 5));
System.out.println("Min " + XPoly.timMin(1, 2, 3, 4, 5));
System.out.println("Max " + XPoly.timMax(1, 2, 3, 4, 5));
System.out.println("Ghi hoa chu cai dau: " + XPoly.ghiHoaKyTuDauTienMoiTu("tOny tEO teO TEO"));
}
Xong!