Thông tin chung về môn học Lập trình (Hướng đối tượng với) Java:
- Thông tin chung về môn học; số tín chỉ; đề cương; ...
- Các nội dung/chủ đề chính của môn học
- Tài liệu học tập
- Hướng dẫn cài đặt và cấu hình Java; Eclipse
Thông tin chung về môn học Lập trình (Hướng đối tượng với) Java:
Cấu trúc dữ liệu Mảng
+ Mảng là một cấu trúc dữ liệu, tại
đó chúng ta có thể lưu trữ các phần tử tương tự nhau. Thông thường, 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ề
+ Trong Java, mảng có thể được hiểu
là MẢNG ĐỘNG, nghĩa là ta không cần phải khai báo/xác định trước kích thước tối
đa của mảng.
+ Mảng trong Java là dựa trên chỉ mục (index), phần tử đầu tiên của
mảng được lưu trữ tại chỉ mục 0.
Lợi thế của mảng trong Java
+ Tối ưu hóa code: từ đó chúng ta có thể thu nhận và sắp xếp dữ liệu
một cách dễ dàng.
+ Truy cập ngẫu nhiên: chúng ta có thể lấy bất cứ dữ liệu nào ở tại
bất cứ vị trí chỉ mục nào.
Các kiểu mảng trong Java: Có hai kiểu mảng trong Java, đó là:
+ Mảng một chiều
+ Mảng đa chiều. (thực chất mảng m chiều ta đều có thể quy về Mảng của mảng m-1 chiều. Vì vậy, mục này ta chỉ nghiên cứu và làm việc với Mảng 2 chiều.
Quy trình làm việc với mảng trong Java
Bước 1: Khai báo đối tượng mảng
Mảng 1 chiều:
§
<Kiểu dữ liệu>[] <Biến
mảng>;
§
<Kiểu dữ liệu> <Biến
mảng>[];
Ví dụ: int[] A, B, C; // => A, B, C đều là mảng các
số nguyên.
int X[], Y, Z[] ; // chỉ X và Z là mảng; Y là biến thường
Mảng 2 chiều:
§
<Kiểu dữ liệu>[][] <Biến
mảng>;
§
<Kiểu dữ liệu>[] <Biến
mảng>[];
§
<Kiểu dữ liệu> <Biến
mảng>[][];
Ví dụ: double[][] M ;
Bước 2: Nhập kích thước mảng:
Mảng 1 chiều: Nhập 1 số nguyên (m) // Số phần tử
Mảng 2 chiều: Nhập 2 số nguyên (h, c) // Số hàng, số cột
Ví dụ, nhập với đối tượng thuộc lớp Scanner
(Scanner sc = new Scanner(System.in);)
Nhập số nguyên:
m = sc.nextInt(); //
Ví dụ: m=100;
h = sc.nextInt(); c
= sc.nextInt(); // Ví dụ: h=3; c=4
Nhập số thực: sc.nextDouble();
Bước 3: Tạo lập đối tượng mảng
A = new
int[m];
// A là một mảng chứa m số nguyên int
M = new double[h][c]; // M là
một mảng 2 chiều, chứa h*c số thực double
Bước 4: Truy cập mảng: Truy cập theo cú
pháp
Mảng một chiều:
<Biến mảng>[chỉ_số];
Mảng 2 chiều: <Biến
mảng>[chỉ_số_hàng][chỉ_số_cột];
Trong đó: chỉ_số; chỉ_số_hàng; chỉ_số_cột là các số nguyên không
âm; nhỏ hơn kích thước của chiều tương ứng. Nếu vi phạm điều này, sẽ xuất hiện
ngoại lệ: ArrayIndexOutOfBoundsException
A[10] = 100; int c = 2 * A[6];
Double x = M[1][2] + c*M[2][2];
Ví dụ 1: Xây dựng chương trình Java thực hiện các công việc sau:
1) Nhập vào một mảng (dãy số) gồm m số nguyên từ bàn phím.
2) In ra dãy số đã nhập
3) Tìm và in ra giá trị lớn nhất của các phần tử trong dãy
Hướng dẫn giải
Input:
+ Số nguyên dương m (là số phần tử của dãy số)
+ m số nguyên, là giá trị các phần tử của dãy số
Output (nhiệm vụ cần làm):
+ In ra dãy số đã nhập
+ Tìm và in ra giá trị lớn nhất của các phần tử thuộc dãy đã nhập ở trên
Gợi ý (xây dựng code): Do yêu cầu không quá nhiều, có thể thực hiện trong hàm main
+ Số lớp cần xây dựng: 01 - là lớp chính - tên lớp đặt là DaySo+ Các nội dung công việc triển khai trong hàm main
+ Tên file mã nguồn là: DaySo.java
Code:
// Tập tin: DaySo.java
/* Nhập vào một mảng (dãy số) gồm m số nguyên từ bàn phím.
- In ra dãy số đã nhập
- Tìm và in ra giá trị lớn nhất của các phần tử trong dãy
*/
import java.io.*;
import java.util.Scanner;
public class DaySo {
public static void main(String arg[]) {
Scanner sc = new Scanner(System.in);
int m; // Số phần tử của dãy số (Mảng 1 chiều)
//Bước 1: Khai báo đối tượng mảng
int A[]; // Mảng 1 chiều (Dãy số) các số nguyên
//Bước 2: Nhập/xác định kích thước mảng
System.out.print("Nhap so phan tu :");
m = sc.nextInt(); // Nhập 1 số nguyên (lưu ý: phương thức này chưa được xử lý ngoại lệ)
// Bước 3: Tạo lập đối tượng mảng
A = new int[m];
// Bước 4: Truy cập mảng
//Nhập giá trị cho các phần tử của dãy số
for(int i=0;i<m;i++) {
System.out.print("A["+i+"] = ");
A[i] = sc.nextInt();
}
// In ra giá trị mảng đã nhập trên 1 dòng; mỗi phần tử cách nhau 1 dấu TAB
System.out.println("\n===== MẢNG ĐÃ NHẬP ===== ");
for(int i=0;i<m;i++) System.out.print(A[i] + "\t");
// Tìm max
int max=A[0];
for(int j=1;j<m;j++)
if(max < A[j]) max = A[j]; // Nếu max < A[j] thì cập nhật lại giá trị của max
System.out.println("\n\n =====> Giá trị Max = " + max);
}
}
Demo kết quả thực hiện