VCT nhập mảng gồm n số nguyên dương in ra số nguyên tố những phần tử trong mảng. HOC24. Lớp học. Lớp học. Tất cả Lớp 12 Lớp 11 Lớp 10 Lớp 9 Lớp 8 Lớp 7 Lớp 6 Lớp 5 Lớp 4 Lớp 3 Lớp 2 Lớp 1 Java là một ngôn ngữ lập trình thuần hướng đối tượng, nên cách nhập dữ liệu từ bàn phím cũng phải sử dụng theo hướng đổi tượng. Tức là bạn phải khai báo một đối tượng, sau đó gọi hàm nhập, rồi gán giá trị cho biến. Scanner là một lớp trong thư viện Java.util Công ty CÔNG TY TNHH THƯƠNG MẠI SẢN XUẤT VÀ TRUYỀN THÔNG VIETZ tuyển Nhân Viên Kinh Doanh Mảng Truyền Thông (Thu Nhập 12 - 20 Triệu) tại Hà Nội, Hai Bà Trưng, lương Trên 12 triệu, kinh nghiệm 1 năm, kỹ năng Adobe Premiere Pro . hoi nhap va canh tranh gay git trong thai gian tai, nhim tirng buac dua Cong ty tra thanh mot Cong ty manh trong ITnb vue San xuit xi mang. Cung cip cho XMBS mot bue tranh toan canh k . te quoc te. Cong ty XMBS vai cong suat thiet ke 1,4 trieu . hoi nhap va canh tranh gay git trong thai gian tai, nhim tirng buac dua Cong ty tra thanh mot Cong Tình hình là trong lớp chưa học lý thuyết, nhưng khi thực hành thầy lại cho làm bt về mảng (GV dạy lý thuyết và thực hành khác nhau) Em có bt như sau: 1. Nhập 1 mảng. Xuất ra: -Các phần tử chẵn trong mảng. (giá trị chẵn) -Số lượng phần tử chẵn trong mảng. -Tổng các phần tử chẵn trong mảng. Lớp Wrapper trong java. Duyệt mảng trong java là quá trình truy cập từng phần tử của một mảng. Duyêt mảng thường được thực hiện bắt đầu với phần tử đầu tiên và cho đến khi kết thúc mảng. Tuy nhiên, nó cũng có thể di chuyển ngược hoặc bỏ qua các phần tử. Ở đây Chuyển mảng 1 chiều thành chuỗi trong Java | Arrays.toString Trong Java, nếu chúng ta tạo một mảng và gán nó cho một biến mảng, thì biến mảng sẽ chứa giá trị tham chiếu đến mảng. Do đó nếu bạn in biến mảng ra màn hình, thì không phải mảng, mà là một chuỗi ký tự đại diện cho giá trị tham chiếu sẽ được xuất ra màn hình. Ví dụ: coD7i3y. Mảng là một tập hợp các phần tử có kiểu tương tự nhau mà có vị trí ô nhớ liền kề. Mảng một chiều là một tập hợp của nhiều phần tử có kiểu dữ liệu giống nhau. Thực ra nó cũng gần tương tự nhau nên mình sẽ không giải thích gì nhiều nữa. Sự khác biệt là ở mảng đa chiều ta sẽ học trong bài sau. Để khai báo mảng, chúng ta cần phải xác định trước 3 thông tin cần thiết sau Kiểu dữ liệu của mảng. Tên của mảng. Số lượng các phần tử hay kích thước của mảng. Ta có 2 cách để khai báo một biến mảng C1 []; C2 [] ; Trong đó kiểu_dữ_liệu mô tả kiểu của mỗi phần tử thuộc mảng như int, char, double, String,… tên_mảng là tên của mảng và quy tắc đặt tên phải tuân theo quy tắc đặt tên biến trong Java. Ngoài ra ta còn có thể sử dụng từ khóa new . Cú pháp với từ khóa new giúp bạn ta vừa khai báo mảng vừa khởi tạo mảng. Tại sao lại như vậy? Vì tương tự như chuỗi, bản chất của mảng là 1 đối tượng. Vì vậy mà mảng cũng cần cấp phát bộ nhớ trước khi sử dụng. Chính vì thế mà khi sử dụng new ta đã vừa khai báo mà vừa khởi tạo mảng. Cú pháp [kiểu_dữ_liệu] [] [tên_mảng] = new [kiểu_dữ_liệu] [kích_thước_mảng] ; Nếu ta khai báo mảng rồi thì có thể khởi tạo mảng bằng cú pháp sau [tên_mảng] = new [kiểu_dữ_liệu] [kích_thước_mảng]; Trong đó kích_thước_mảng chỉ ra số phần tử tối đa mà mảng có thể lưu trữ. Giá trị này luôn phải là một số nguyên dương Ví dụ class Main{ public static void mainString[] args{ int []a;//khai báo mảng a = new int [5];//khởi tạo mảng } } Hoặc ta có thể vừa khai báo vừa khởi tạo giá trị cho mảng int[] a = new int[]{1,3,5,7,9}; Mảng này tên là a có kiểu dữ liệu int và chứa 5 phần tử có giá trị là 1, 3, 5, 7, 9 2. Truy xuất phần tử mảng một chiều trong Java Đối với mảng một chiều thì chúng ta có thể truy xuất các phần tử của mảng thông qua các chỉ số của phần tử đó. Cú pháp Tên_mảng[Chỉ_số_phần_tử]; Trong đó [Chỉ_số_phần_tử] là số thứ tự của các phần tử trong mảng. Và như mình đã lưu ý nhiều lần thì chỉ số trong mảng bắt đầu từ 0. Ví dụ mảng có n phần tử thì các phần tử của nó có chỉ số lần lượt là 0, 1, 2,…, n – 1 Ví dụ class Main{ public static void mainString[] args { // Khai báo và khởi tạo giá trị ban đầu cho mảng char[] kyTu = new char[] {'l', 't', 't', 'd', 'j'}; // hiển thị ký tự tại vị trí thứ 2 trong mảng tự tại vị trí thứ 2 trong mảng " + kyTu[2]; } } Kết quả Ký tự tại vị trí thứ 2 trong mảng t 3. Gán giá trị cho phần tử trong mảng một chiều Ta có 2 mảng array1 và array2 là các mảng có cùng kiểu dữ liệu. Giả sử các phần tử trong mảng array1 đã có giá trị, khi đó chúng ta có thể gán giá trị của một phần tử trong array1 cho một phần tử trong mảng array2 Ta sẽ làm như sau class Main{ public static void mainString[] args { // khai báo mảng array1 và array2 int[] array1 = {2, 10, 3, 9, 8}; int array2[] = new int[5]; // gán giá trị của phần tử thứ 2 trong mảng array1 // cho phần tử thứ 3 trong mảng array2 array2[3] = array1[2]; trị của phần tử thứ 3 trong mảng array2 = " + array2[3]; } } Kết quả Giá trị của phần tử thứ 3 trong mảng array2 = 3 Trong bài trước, các bạn đã được tìm hiểu về mảng một chiều trong Java. Sang bài này, tôi sẽ giới thiệu đến các bạn một khái niệm mảng mới phức tạp hơn mảng một chiều, đó là khái niệm mảng hai chiều trong Java. Sau khi đã nắm được phần lý thuyết tôi đã trình bày trong bài này thì tôi sẽ đưa ra một số bài tập để các bạn luyện viết này được đăng tại không được copy dưới mọi hình thức. 1. Mảng hai chiều trong Java Như đã nói trong bài trước, mảng hai chiều là mảng có 2 chỉ số để lưu trữ các giá trị chẳng hạn giá trị của một bảng có m dòng, n cột. Sau đây chúng ta sẽ đi tìm hiểu chi tiết về nội dung của bài học này. Cú pháp khai báo mảng Tương tự như khai báo mảng 1 chiều, cú pháp khai báo mảng 2 chiều có 2 dạng như sau Dạng 1Bài viết này được đăng tại [free tuts .net] [Kiểu_dữ_liệu] Tên_mảng[][]; Dạng 2 [Kiểu_dữ_liệu][][] Tên_mảng; trong đó [Kiểu_dữ_liệu] mô tả kiểu của mỗi phần tử thuộc mảng như int, char, double, String,..., tên_mảng là tên của mảng và quy tắc đặt tên phải tuân theo quy tắc đặt tên biến trong Java. Ví dụ int a[][]; khai báo mảng hai chiều a có kiểu dữ liệu là int. Cấp phát bộ nhớ cho mảng Để cấp phát bộ nhớ cho mảng 2 chiều thì chúng ta sử dụng từ khóa new, trong đó [Số_dòng], [Số_cột] là hai số nguyên dương chỉ ra số lượng dòng và số lượng cột của mảng hai chiều và trong Java có 2 cách để cấp phát bộ nhớ như sau Cách 1[Kiểu_dữ_liệu] Tên_mảng[][] = new [Kiểu_dữ_liệu] [Số_dòng][Số_cột]; Ví dụ khai báo và cấp phát bộ nhớ cho mảng number có 2 dòng, 3 cột int number[][] = new int[2][3]; Cách 2 [Kiểu_dữ_liệu][][] Tên_mảng = new [Kiểu_dữ_liệu] [Số_dòng][Số_cột]; Ví dụ khai báo và cấp phát bộ nhớ cho mảng A có 3 dòng, 5 cột String[][] A = new String[3][5]; Khi trình biên dịch gặp lệnh trên thì nó sẽ cấp phát vùng nhớ để chứa mảng hai chiều có 3 dòng, 5 cột với số phần tử trong mảng = số dòng * số cột = 15. Hình ảnh minh họa của mảng hai chiều trên như là một bảng gồm có các dòng và các cột như sau Bản chất của mảng 2 chiều là mỗi dòng của nó chính là một mảng một chiều. Ví dụ với mảng hai chiều a có 3 dòng, 5 cột, mỗi phần tử của mảng có kiểu int thì a được xem như mảng một chiều có 3 phần tử, mỗi phần tử này là một mảng một chiều có 5 phần tử. Ngoài ra, Java còn cho phép chúng ta vừa có thể khai báo mảng và vừa khởi tạo giá trị cho mảng. Ví dụ để khai báo mảng một chiều có tên là diem, kiểu dữ liệu là int và mảng này chứa 6 phần tử có giá trị lần lượt là 1, 2, 3, 4, 5, 6 thì chúng ta làm như sau // khai báo một mảng 2 chiều có 3 dòng và 2 cột int diem[][] = {{1, 2}, {3, 4}, {5, 6}}; Bảng dưới đây minh họa mảng hai chiều trên Dòng Cột 0 1 0 1 2 1 3 4 2 5 6 Truy xuất các phần tử của mảng Mỗi phần tử của mảng 2 chiều được truy xuất thông qua tên mảng cùng với chỉ số dòng và chỉ số cột của phần tử đó. Tương tự như mảng một chiều, nếu một mảng hai chiều có m dòng và n cột thì chỉ số của dòng sẽ chạy từ 0, 1, 2,..., m - 1 và chỉ số của cột sẽ chạy từ 0, 1, 2,..., n - 1. Cú pháp như sau Tên_mảng[Chỉ_số_dòng][Chỉ_số_cột] Ví dụ Để truy cập đến phần tử nằm ở dòng 2, cột 1 của mảng diem được khai báo ở trên thì chúng ta làm như sau public static void mainString[] args { // khai báo một mảng 2 chiều có 3 dòng và 2 cột int diem[][] = {{1, 2}, {3, 4}, {5, 6}}; tử nằm ở dòng 2 và cột 1 trong mảng diem là " + diem[2][1]; } Nhìn vào bảng minh họa bên trên thì chúng ta nhận thấy phần tử nằm ở dòng 2 và cột 1 trong bảng diem là 6. Kết quả biên dịch chương trình cũng cho chúng ta thấy được điều đó 2. Nhập xuất các phần tử cho mảng Chương trình dưới đây sẽ minh họa cách nhập các phần tử cho mảng hai chiều từ bàn phím và sau đó hiển thị các phần tử đó ra màn hình. Ví dụ public static void mainString[] args { // khai báo số dòng và số cột cho mảng int soDong, soCot; Scanner scanner = new Scanner vào số dòng của mảng "; soDong = vào số cột của mảng "; soCot = // khai báo và cấp phát bộ nhớ cho mảng int[][] A = new int[soDong][soCot]; // Để nhập giá trị các phần tử cho mảng // chúng ta sẽ sử dụng 2 vòng lặp for // vòng lặp for bên ngoài sẽ duyệt i từ 0 đến soDong - 1 // và vòng lặp for bên trong sẽ duyệt j từ 0 đến soCot - 1 // mỗi lần như vậy thì sẽ nhập vào phần tử tại vị trí i, j for int i = 0; i soPhanTuKhac0 { trận vừa nhập là ma trận thưa"; } else { trận vừa nhập là ma trận không thưa"; } } Kết quả sau khi biên dịch chương trình Ví dụ 3 Một ma trận được gọi là ma trận đối xứng trước hết nó phải là ma trận vuông có số dòng và số cột bằng nhau và các phần tử của nó đối xứng nhau qua đường chéo chính. Viết chương trình nhập từ bàn phím các phần tử của ma trận A, kích thước m dòng, n cột 1 <= m, n <= 5. Kiểm tra xem ma trận vừa nhập có phải là ma trận đối xứng hay không? Hướng dẫn Giả sử chúng ta có một ma trận vuông có 3 dòng, 3 cột thì chúng ta gọi ma trận này là ma trận vuông bậc 3. Hình dưới đây minh họa đường chéo phụ và đường chéo chính như sau Các phần tử nằm trên đường chéo chính có đặc điểm chỉ số dòng bằng chỉ số cột. Ví dụ trong hình trên chúng ta thấy có các phần tử nằm trên đường chéo chính như a11, a12,..., ann, các phần tử này được gọi là các phần tử chéo. Để kiểm tra ma trận A có phải là ma trận đối xứng hay không thì cần thực hiện các bước sau Ma trận A nhập vào phải luôn luôn là một ma trận vuông. Kiểm tra phần tử nằm dưới đường chéo chính có bằng phần tử đối xứng với nó qua đường chéo chính hay không tức là kiểm tra các phần tử A[i][j] có bằng A[j][i] không, với i, j chạy từ 0 đến n. Bài giải public static void mainString[] args { int n; // bậc của ma trận int kt = 0; Scanner scanner = new Scanner do { vào số bậc của ma trận "; n = } while n < 1; // ma trận A là ma trận vuông // có n dòng và n cột int[][] A = new int[n][n]; các phần tử cho ma trận A"; for int i = 0; i < n; i++ { for int j = 0; j < n; j++ { + i + "," + j + "] = "; A[i][j] = } } trận A vừa nhập"; for int i = 0; i < n; i++ { for int j = 0; j < n; j++ { + "\t"; } } // kiểm tra các phần tử nằm dưới đường chéo chính // và phần tử đối xứng với nó qua đường chéo chính // có bằng nhau hay không // nếu bằng nhau thì ma trận đó là ma trận đối xứng for int i = 0; i < n; i++ { for int j = 0; j < i; j++ { if A[i][j] == A[j][i] { kt = 1; } else { kt = 0; } } } if kt == 1 { trận vừa nhập là ma trận đối xứng"; } else { trận vừa nhập là ma trận không đối xứng"; } } Giải thích hoạt động của chương trình trên như sau Giả sử khi biên dịch chương trình, tôi nhập vào một ma trận vuông bậc 3 như sau 3 1 2 1 0 3 2 3 0 Thì chúng ta thấy các phần tử nằm trên đường chéo chính bao gồm 3 phần tử đó là A00 = 3, A11 = 0 và A22 = 0. Hoạt động của vòng lặp for kiểm tra mảng đó có phải là mảng đối xứng trải qua các bước như sau Bước 1 Khởi tạo i = 0 < n nhưng j = 0 = i nên không thực hiện lệnh trong thân vòng lặp for. Bước 2 Tăng i lên 1, lúc này i = 1 < n và j = 0 < i nên thực hiện lệnh trong thân vòng lặp for thì thấy A[1][0] = A[0][1] = 1 nên lúc này biến kt = 1. Bước 3 Tăng j lên 1, lúc này j = 1 = i nên không thực hiện lệnh trong thân vòng lặp for. Bước 4 Quay lại vòng lặp for, lúc này i = 2 < n và j = 0 < i nên thực hiện lệnh trong thân vòng lặp for thì thấy A[2][0] = A[0][2] = 2 nên lúc này biến kt = 1. Bước 5 Tăng j lên 1, lúc này j = 1 < i nên thực hiện lệnh trong thân vòng lặp for thì thấy A[2][1] = A[1][2] = 3 nên lúc này biến kt = 1. Bước 6 Tăng j lên 1, lúc này j = 2 = i nên không thực hiện lệnh trong thân vòng lặp for. Bước 7 Tăng i lên 1, lúc này i = 3 = n nên kết thúc vòng lặp for. Bước 8 Sau khi ra khỏi vòng lặp for thì lúc này biến kt = 1 nên sẽ hiển thị thông báo "Ma trận vừa nhập là ma trận đối xứng" ra màn hình. 4. Hạn chế của mảng Vì khi khai báo mảng, chúng ta cần phải khai báo kích thước cố định cho mảng nên sẽ xảy ra 2 trường hợp như sau Nếu khai báo mảng với kích thước lớn mà không sử dụng hết sẽ gây lãng phí bộ nhớ, ngược lại nếu khai báo mảng với kích thước quá nhỏ thì chúng ta sẽ không thể mở rộng mảng được. Vì các phần tử trong mảng được sắp xếp liên tục nên việc chèn hoặc xóa một phần tử trong mảng cũng sẽ gặp nhiều khó khăn. 5. Lời kết Đây là bài cuối cùng về mảng và cũng là bài cuối cùng trong chương Chuỗi và mảng. Sang chương sau, chúng ta sẽ bước sang tìm hiểu một khái niệm mới dùng để giải quyết những hạn chế của mảng - đó là khái niệm Collections Tập hợp trong Java. Các bạn theo dõi nhé! 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 class Main { public static void mainString[] args { double[] myList = new double[5]; Scanner input = new Scanner " + + " cua mang"; for int i = 0; i max{ max = myList[i]; indexMax = i; } } tu max trong mang = " + max; so phan tu min trong mang = " + indexMax; } } Kết quảPhan tu max trong mang = Chi so phan tu min trong mang = 4 3. Duyệt mảng với vòng lặp for-eachCá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 Main { public static void mainString[] args { double[] myList = { 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 = //tính trung bình cộng các phần tử trong mảng average = sum/arrayLength; = " + sum; binh = " + average; } } Kết quảTong = Trung binh = 4. Truyền mảng cho phương thức trong JavaMộ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 Main { public static void swapFirstTwoInArrayint[] array { int temp = array[0]; array[0] = array[1]; array[1] = temp; } public static void mainString[] args { int[] arr = {1, 2}; truoc khi goi ham swap"; la {" + arr[0] + ", " + arr[1] + "}"; swapFirstTwoInArrayarr; sau khi goi ham swap"; 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 Kiểu dữ liệu trả về của phương thức là một mảngKết quả trả về của một phương thức có thể là một Main { public static int[] reverseint[] list { int[] result = new int[ for int i=0, j= i< i++,j- { result[j] = list[i]; } return result; } public static void mainString[] args { int[] list1 = {1, 2, 3, 4, 5, 6}; int[] list2 = reverselist1; list2 "; forint itemlist2{ + " "; } } } Kết quảMang list2 6 5 4 3 2 1Hàm reverse có kiểu trả về là mảng kiểu Lớp Arrays trong JavaLớp 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,… 6 bước xây dựng một chương trình máy tính Sử dụng từ khóa super trong Java Sự khác nhau giữa echo và print trong PHP Sử dụng kiểu dữ liệu boolean trong PHP Kỹ thuật lập trình với kiểu cấu trúc và con trỏ trong C++import class Main { public static int[] reverseint[] list { int[] result = new int[ for int i=0, j= i< i++,j- { result[j] = list[i]; } return result; } public static void mainString[] args { double[] numbers = { cua phan tu la" + xếp mảng tang dan da sap xep tang dan" + } } Kết quảIndex cua phan tu la2 Mang da sap xep tang dan[ Viết chương trình nhập mảng n số nguyên với các giá trị ngẫu nhiên. Xuất tổng, tìm giá trị nhỏ nhất và sắp xếp mảng. Bài giải - - Trong bài tập này tôi dùng phương pháp sắp xếp Exchange sort để sắp xếp các phần tử trong mảng theo thứ tự giảm dần. Sau khi đã có được mảng giảm dần thì phần tử nhỏ nhất chính là phần tử cuối cùng trong mảng. Bài viết này được đăng tại không được copy dưới mọi hình thức. Bài giải public static void mainString[] args { int n, sum = 0, tempSort; Scanner scanner = new Scanner do { vào số phần tử của mảng "; n = } while n < 0; // khởi tạo và cấp phát bộ nhớ cho mảng int array[] = new int[n]; các phần tử cho mảng "; for int i = 0; i < n; i++ { phần tử thứ " + i + " "; array[i] = } // Hiển thị mảng vừa nhập ban đầu "; for int i = 0; i < n; i++ { + "\t"; } // tính tổng các phần tử có trong mảng for int i = 0; i < n; i++ { sum += array[i]; } các phần tử có trong mảng = " + sum; // sắp xếp theo thứ tự giảm dần for int i = 0; i < n - 1; i++ { for int j = i + 1; j <= n - 1; j++ { if array[i] < array[j] { tempSort = array[i]; array[i] = array[j]; array[j] = tempSort; } } } sau khi sắp xếp là "; for int i = 0; i < n; i++ { + "\t"; } // tìm phần tử nhỏ nhất // sau khi sắp xếp theo thứ tự giảm dần // thì phần tử nhỏ nhất là phần tử cuối cùng trong mảng tử nhỏ nhất trong mảng là " + array[n - 1]; } Kết quả sau khi biên dịch chương trình Câu hỏi thường gặp liên quan Java - Nhập mảng và thực hiện các thao tác trên mảng. Java - Sắp xếp mảng tăng dần sử dụng phương pháp nổi bọt Bubble sort. Java - Tìm kiếm một phần tử sử dụng trong mảng sử dụng thuật tìm kiếm nhị phân. Java - Kiểm tra mảng một chiều vừa nhập có phải là mảng đối xứng hay không? Java - Tìm và in ra màn hình số lượng số nguyên lẻ, số lượng số nguyên chẵn trong mảng. Java - Xóa phần tử có giá trị k trong mảng k nhập từ bàn phím. Java - Nhập mảng và thực hiện tách các số chẵn và lẻ trong mảng sang hai mảng khác. Java - Tách một nửa đầu của mảng ban đầu sang mảng thứ nhất và nửa còn lại sang mảng thứ hai. Java - Viết chương trình hiển thị các phần tử chia hết cho 5 trong mảng. Java - Đếm số lần xuất hiện của 1 phần tử được nhập từ bàn phím. Java - Bài tập tổng hợp các thao tác trên mảng. Java - Viết chương trình nhập mảng sao cho không có phần tử nào trùng nhau. Cùng chuyên mục Ở chương này, chúng ta sẽ tìm hiểu về khái niệm mảng trong Java. Mảng trong lập trình có 2 loại đó là mảng một chiều và hai chiều. Tuy nhiên, vì hai phần này khá dài nên trong bài này tôi sẽ giới thiệu các bạn khái niệm mảng một chiều trong Java. Sang bài sau, các bạn sẽ được học về khái niệm mảng hai chiều. Cuối bài này, tôi sẽ đưa ra một số bài tập vận dụng mảng và kết hợp mảng một chiều và chuỗi để giải quyết các yêu cầu cho các bạn luyện viết này được đăng tại không được copy dưới mọi hình thức. 1. Giới thiệu chung về mảng Trong Java cũng như các ngôn ngữ lập trình khác, mảng là kiểu dữ liệu có cấu trúc gồm một tập hợp cố định các phần tử có cùng kiểu dữ liệu, các phần tử của mảng có cùng tên và được phân biệt nhau bởi chỉ số. Mỗi phần tử của mảng được sử dụng như là một biến đơn, kiểu dữ liệu của mảng chính là kiểu dữ liệu của phần tử. Như vậy, đối với mảng thì chúng ta cần quan tâm đến các thành phần sau Các thông tin liên quan đến mảng tên mảng, số phần tử của mảng, kiểu dữ liệu của mảng. Số chiều của mảng Nếu mảng chỉ có một chỉ số để lưu trữ các giá trị vào trong các biến thành phần của mảng thì được gọi là mảng một chiều. Nếu mảng có 2 chỉ số để lưu trữ các giá trị chẳng hạn giá trị của một bảng có m dòng, n cột được gọi là mảng 2 chiều. Tương tự, ta có mảng 3 chiều, 4 chiều, ..., n chiều. Trong lập trình, mảng thường xuyên được sử dụng không chỉ bởi tính đơn giản, dễ sử dụng của nó mà còn ở khả năng đáp ứng nhu cầu lưu trữ dữ liệu trong các bài toán thực tế. Chúng ta có thể sử dụng mảng khi cần lưu trữ nhiều giá trị, chẳng hạn như lưu trữ các số nguyên từ 1 đến 5; dãy 32 chuỗi ký tự, trong đó mỗi chuỗi lưu trữ tên của một sinh viên trong một lớp học... Trong Java, mảng được hỗ trợ dưới dạng mảng một chiều cho đến mảng nhiều chiều. Nhưng thông thường, khi lập trình chúng ta thường chỉ sử dụng mảng có tối đa là ba chiều và mảng một chiều là mảng được sử dụng nhiều nhất. Trong chương này, tôi sẽ hướng dẫn các bạn tìm hiểu về mảng một chiều và mảng hai chiều, khi đã nắm chắc được 2 khái niệm này thì các bạn có thể làm việc với các loại mảng có số chiều nhiều hơn. Sau đây, chúng ta sẽ đi vào phần nội dung chính của bài này, đó là khái niệm, cú pháp khai báo, cách sử dụng và các phương thức của mảng một chiều và ví dụ vận viết này được đăng tại [free tuts .net] 2. Mảng một chiều trong Java Mảng một chiều là một tập hợp của nhiều phần tử có kiểu dữ liệu giống nhau. Cú pháp khai báo mảng Để khai báo mảng, chúng ta cần phải xác định trước 3 thông tin cần thiết sau Kiểu dữ liệu của mảng. Tên của mảng. Số lượng các phần tử hay kích thước của mảng. Câu lệnh khai báo mảng sẽ có 2 dạng như sau Dạng 1 [Kiểu_dữ_liệu] tên_mảng[]; Dạng 2 [Kiểu_dữ_liệu][] tên_mảng; trong đó, [Kiểu_dữ_liệu] mô tả kiểu của mỗi phần tử thuộc mảng như int, char, double, String,..., tên_mảng là tên của mảng và quy tắc đặt tên phải tuân theo quy tắc đặt tên biến trong Java. Ví dụ int[] a; khai báo mảng tên a và có kiểu dữ liệu là int. Cấp phát bộ nhớ cho mảng Tương tự như chuỗi, bản chất của mảng là 1 đối tượng chi tiết về đối tượng chúng ta sẽ được học trong chương Lập trình hướng đối tượng, vì vậy mảng cần phải được cấp phát bộ nhớ trước khi sử dụng. Để cấp phát bộ nhớ cho mảng thì chúng ta có 2 cách như sau Cách 1 [Kiểu_dữ_liệu] tên_mảng[] = new [Kiểu_dữ_liệu] [Số_phần_tử_của_mảng]; Cách 2 [Kiểu_dữ_liệu][] tên_mảng = new [Kiểu_dữ_liệu] [Số_phần_tử_của_mảng]; trong đó, [Số_phần_tử_của_mảng] chỉ ra số lượng phần tử tối đa mà mảng có thể lưu trữ, giá trị này phải là một số nguyên dương. Ngoài ra, Java còn cho phép chúng ta vừa có thể khai báo mảng và vừa khởi tạo giá trị cho mảng, ví dụ int[] a = new int[] {2, 10, 4, 8, 5}; khai báo mảng một chiều có tên là a, kiểu dữ liệu là int và mảng này chứa 5 phần tử có giá trị lần lượt là 2, 10, 4, 8, 5. Truy xuất các phần tử của mảng Đối với mảng thì chúng ta có thể truy xuất các phần tử của mảng thông qua các chỉ số của phần tử đó. Cú pháp như sau Tên_mảng[Chỉ_số_phần_tử]; trong đó, [Chỉ_số_phần_tử] là số thứ tự của các phần tử trong mảng và bắt đầu từ 0. Như vậy, mảng có n phần tử thì các phần tử của nó có chỉ số lần lượt là 0, 1, 2,..., n - 1. Ví dụ Chúng ta có đoạn chương trình sau public static void mainString[] args { // Khai báo và khởi tạo giá trị ban đầu cho mảng char[] kyTu = new char[] {'a', 'b', 'c', 'd', 'e'}; // hiển thị ký tự tại vị trí thứ 2 trong mảng tự tại vị trí thứ 2 trong mảng là " + kyTu[2]; } Kết quả sau khi biên dịch chương trình 3. Nhập xuất các phần tử cho mảng Chương trình dưới đây sẽ minh họa cách nhập các phần tử cho mảng một chiều từ bàn phím và sau đó hiển thị các phần tử đó ra màn hình. Ví dụ public static void mainString[] args { int size; // kích thước của mảng Scanner scanner = new Scanner vào độ dài của mảng "; size= // khai báo và cấp phát bộ nhớ cho mảng // mảng này có tên là array và kích thước = size int[] array = new int[size]; // trả về kích thước của mảng // vòng lặp này sẽ duyệt i từ 0 đến chiều dài của mảng - 1 for int i = 0; i = 2 và n max - 1 // thì phải nhập lại do { số phần tử của mảng "; n = } while n max-1; giá trị cho các phần tử của mảng "; for int i = 0; i 0 từ bàn phím. Nhập số nguyên k từ bàn phím. Tìm kiếm phần tử đầu tiên trong mảng có giá trị bằng k và thông báo lên màn hình vị trí của phần tử đó. Nếu không có phần tử nào của mảng có giá trị bằng k thì thông báo "Trong mảng không có phần tử nào chứa giá trị cần tìm." Yêu cầu kỹ thuật Chương trình phải kiểm tra n nhập vào nếu n số phần tử tối đa của mảng thì yêu cầu nhập lại số phần tử cho đến khi thỏa mãn điều kiện. Bài giải public static void mainString[] args { int n, max = 100, i; int[] A = new int[max]; Scanner scanner = new Scanner do { số phần tử của mảng "; n = } while n max - 1; giá trị cho các phần tử của mảng "; for i = 0; i n-1 { mảng không có phần tử nào chứa giá trị cần tìm."; } else { tử đầu tiên có giá trị bằng " + k + " tại vị trí = " + i; } } Kết quả sau khi biên dịch chương trình Phương pháp tìm kiếm được sử dụng trong ví dụ này được gọi là tìm kiếm tuần tự. Với phương pháp thì trong trường hợp xấu nhất có thể có đến n phép so sánh, tuy nhiên đây cũng là 1 cách tìm kiếm cơ bản nhất mà bất cứ lập trình viên nào cũng nên biết và sử dụng được nó. 5. Lời kết Đây là bài tìm hiểu về kiểu mảng đầu tiên trong Java đó là mảng một chiều. Như đã nói, nội dung của bài này khá dài và khá phức tạp nên tôi sẽ không trình bày quá nhiều vì như vậy sẽ dễ làm cho các bạn khó nắm bắt được nội dung của bài. Để giúp các bạn có thể luyện tập tốt hơn về mảng một chiều trong Java, tôi sẽ bổ sung một số bài tập và cố gắng giải thích kỹ để các bạn có thể nắm chắc hơn nội dung về mảng. Các bạn theo dõi nhé!

nhập xuất mảng 1 chiều trong java