/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

[Tự Học Java] MOB1014-Java 1 - Bài 8 - Lớp & Phương Thức Nâng Cao

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.

LÝ THUYẾT

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. 
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!

No comments:

Post a Comment

/*header slide*/