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]