Kỹ thuật lập trình với mảng 1 chiều trong Java

Đây là bài 18/62 bài của series môn học Ngôn ngữ lập trình Java

1. Nhập xuất mảng một chiều

Sử dụng vòng lặp for để nhập các phần tử của mảng từ bàn phím. Sau đó, duyệt mảng để xuất các phần tử của mảng ra màn hình.

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        double[] myList = new double[5];
        Scanner input = new Scanner(System.in);
        System.out.println("Nhap " + myList.length + " cua mang:");
	for (int i = 0; i < myList.length; i++) {
            myList[i] = input.nextDouble();
	}
        System.out.print("Cac phan tu trong mang: ");
        for (int i = 0; i < myList.length; i++) {
            System.out.print(myList[i] + " ");
	}
    }
}
Kết quả
Nhap 5 cua mang:
3.2
5.6
8.7
9.9
2.1
Cac phan tu trong mang: 3.2 5.6 8.7 9.9 2.1

Khởi tạo mảng với giá trị ngẫu nhiên

class Main {
    public static void main(String[] args) {
        double[] myList = new double[5];
        for (int i = 0; i < myList.length; i++) {
            myList[i] = Math.random() * 100;
	}
        System.out.print("Cac phan tu trong mang: ");
        for (int i = 0; i < myList.length; i++) {
            System.out.print(myList[i] + " ");
	}
    }
}
Kết quả
Cac phan tu trong mang: 49.91437233322772 42.229356830793805 44.54614164159645 23.346046110041318 37.47573911419114

Lưu ý: Hàm random(); phát sinh ngẫu nhiên giá trị từ 0.0 đến 1.0.

2. Một số thao tác trên mảng một chiều

Tính tổng các phần tử trong mảng

Sử dụng vòng lặp for duyệt qua từng phần tử trong mảng rồi cộng dồn các phần tử đó.

class Main {
    public static void main(String[] args) {
        double[] myList = {2.3, 5.0, 7.1, 5.5, 9.2};
        double total = 0;
	for (int i = 0; i < myList.length; i++) {
		total += myList[i];
	}
        System.out.print("Tong cac phan tu trong mang = " + total);
    }
}
Kết quả
Tong cac phan tu trong mang = 29.099999999999998

Tìm phần tử nhỏ nhất trong mảng

Gán phần tử đầu tiên là phần tử min. So sánh phần tử min với từng phần tử trong mảng. Nếu một phần tử trong mảng nhỏ hơn min thì gán min bằng phần tử đó.

class Main {
    public static void main(String[] args) {
        double[] myList = {2.3, 5.0, 7.1, 5.5, 9.2};
        double min = myList[0];
        int indexMin = 0;
	for (int i = 0; i < myList.length; i++) {
		if (myList[i] < min){
                    min = myList[i];
                    indexMin = i;
                }
	}
        System.out.println("Phan tu min trong mang = " + min);
        System.out.println("Chi so phan tu min trong mang = " + indexMin);
    }
}
Kết quả
Phan tu min trong mang = 2.3
Chi so phan tu min trong mang = 0

Tìm phần tử lớn nhất trong mảng

Gán phần tử đầu tiên là phần tử max. So sánh phần tử max với từng phần tử trong mảng. Nếu một phần tử trong mảng lớn hơn max thì gán max bằng phần tử đó.

class Main {
    public static void main(String[] args) {
        double[] myList = {2.3, 5.0, 7.1, 5.5, 9.2};
        double max = myList[0];
        int indexMax = 0;
	for (int i = 0; i < myList.length; i++) {
		if (myList[i] > max){
                    max = myList[i];
                    indexMax = i;
                }
	}
        System.out.println("Phan tu max trong mang = " + max);
        System.out.println("Chi so phan tu min trong mang = " + indexMax);
    }
}
Kết quả
Phan tu max trong mang = 9.2
Chi so phan tu min trong mang = 4

3. Duyệt mảng với vòng lặp for-each

Các bạn có thể đọc lại bài Các cấu trúc điều khiển vòng lặp for và for-each trong Java để nắm được cú pháp và cách sử dụng for-each. Bên dưới là ví dụ duyệt mảng với for-each.

class Main {
    public static void main(String[] args) {
        double[] myList = {2.3, 5.0, 7.1, 5.5, 9.2};
        double sum = 0;
        double average = 0;
        //tính tổng các phần tử trong mảng
        for (double number: myList) {
            sum += number;
        }
        //lấy kích thước của mảng
        int arrayLength = myList.length;
        //tính trung bình cộng các phần tử trong mảng
        average =  sum/arrayLength;
        System.out.println("Tong = " + sum);
        System.out.println("Trung binh = " + average);
    }
}
Kết quả
Tong = 29.099999999999998
Trung binh = 5.819999999999999

4. Truyền mảng cho phương thức trong Java

Một phương thức có thể nhận mảng làm tham số. Khi truyền mảng (array) cho phương thức thì là truyền tham chiếu. Bất kỳ sự thay đổi nào xuất hiện trong phương thức sẽ làm thay đổi mảng được truyền vào. Các bạn có thể đọc lại bài Truyền tham trị và tham chiếu cho phương thức trong Java để hiểu rõ về truyền tham chiếu trong Java.

class Main {
    public static void swapFirstTwoInArray(int[] array) {
        int temp = array[0];
        array[0] = array[1];
        array[1] = temp;
    }
    public static void main(String[] args) {
        int[] arr = {1, 2};
        System.out.println("Mang truoc khi goi ham swap");
        System.out.println("array la {" + arr[0] + ", " + arr[1] + "}");
        swapFirstTwoInArray(arr);
        System.out.println("Mang sau khi goi ham swap");
        System.out.println("array la {" + arr[0] + ", " + arr[1] + "}");
    }
}
Kết quả
Mang truoc khi goi ham swap
array la {1, 2}
Mang sau khi goi ham swap
array la {2, 1}

Rõ ràng, khi truyền mảng arr vào hàm swapFirstTwoInArray() thì mảng đã thay đổi.

5. Kiểu dữ liệu trả về của phương thức là một mảng

Kết quả trả về của một phương thức có thể là một mảng.

class Main {
    public static int[] reverse(int[] list) {
        int[] result = new int[list.length];
        for (int i=0, j=result.length-1; i<list.length; i++,j--) {
                result[j] = list[i];
        }
        return result;
    }
    public static void main(String[] args) {
        int[] list1 = {1, 2, 3, 4, 5, 6};
	int[] list2 = reverse(list1);
        System.out.print("Mang list2: ");
        for(int item:list2){
            System.out.print(item + " ");
        }
    }
}
Kết quả
Mang list2: 6 5 4 3 2 1

Hàm reverse() có kiểu trả về là mảng kiểu int.

6. Lớp Arrays trong Java

Lớp java.util.Arrays cung cấp các phương thức tĩnh (static method) cho việc sắp xếp mảng và tìm kiếm trong mảng, so sánh mảng,…

import java.util.Arrays;
class Main {
    public static int[] reverse(int[] list) {
        int[] result = new int[list.length];
        for (int i=0, j=result.length-1; i<list.length; i++,j--) {
                result[j] = list[i];
        }
        return result;
    }
    public static void main(String[] args) {
        double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5};
        System.out.println("Index cua phan tu 1.9 la:" + Arrays.binarySearch(numbers, 1.9));
	Arrays.sort(numbers);//sắp xếp mảng tang dan
        System.out.println("Mang da sap xep tang dan:" + Arrays.toString(numbers));
    }
}
Kết quả
Index cua phan tu 1.9 la:2
Mang da sap xep tang dan:[1.9, 2.9, 3.4, 3.5, 4.4, 6.0]
5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Khai báo và khởi tạo mảng 1 chiều (one dimensional array) trong JavaKhai báo và khởi tạo mảng 2 chiều (two dimensional array) trong Java >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.