33
MẢNG LẬP TRÌNH ỨNG DỤNG JAVA Nguyễn Hoàng Anh Email: [email protected] ĐH KHTN, 2011

03. Java Programming - Array

Embed Size (px)

Citation preview

Page 1: 03. Java Programming - Array

MẢNG

LẬP TRÌNH ỨNG DỤNG JAVA

Nguyễn Hoàng Anh

Email: [email protected]

ĐH KHTN, 2011

Page 2: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Mảng

Mảng một chiều

Mảng hai chiều

Mảng răng cưa hai chiều

2

Page 3: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

MẢNG MỘT CHIỀU

3

Page 4: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Hình ảnh

4

0 1 2 3

3 5 7 9

Chỉ số mảng

Page 5: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khai báo

5

KieuDuLieu[ ] tenBien;

Hoặc KieuDuLieu tenBien [ ];

1

2

3

4

5

6

7

8

9

10

11

12

//Khai báo mảng kiểu int

int[] arr1;

//Khai báo mảng kiểu long

long[] arr2;

//Khai báo mảng kiểu float

float[] arr3;

//Khai báo mảng kiểu double

double[] arr4;

//Khai báo mảng kiểu boolean

boolean[] arr5;

//Khai báo mảng kiểu string

String[] arr6

Page 6: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Cấp phát vùng nhớ

6

Cách 1 KieuDuLieu[] tenBien = new KieuDuLieu [n] ;

Cách 2 KieuDuLieu[] tenBien;

tenBien = new KieuDuLieu [n];

1

2

3

4

5

6

7

8

9

10

11

12

13

//Khai báo và cấp phát mảng kiểu int

int[] arr1 = new int[5];// a.length = 5

//Khai báo và cấp phát mảng kiểu long

long[] arr2 = new long[5];// a.length = 5

//Khai báo và cấp phát mảng kiểu float

float[] arr3 = new float[7];//a.length = 7

//Khai báo và cấp phát mảng kiểu double

double[] arr4 = new double[7];//a.length = 7

//Khai báo và cấp phát mảng kiểu boolean

boolean[] arr5 = new boolean[8];//a.length = 8

//Khai báo và cấp phát mảng kiểu string

String[] arr6 = new String[6];//a.length = 6

Page 7: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khởi tạo

7

1

2

3

4

5

6

7

8

9

//Cách 1

int[] arr = {1, 3, 5, 7, 9}; //a.length = 5

//Cách 2

int [] arr = new int[5];

arr[0]=1;

arr[1]=3;

arr[2]=5;

arr[3]=7;

arr[4]=9;

Page 8: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khởi tạo

8

1

2

3

4

5

6

7

8

9

10

11

//Khởi tạo mảng một chiều kiểu long

long[] arr1 = {1, 3, 5, 7, 9}; //a.length = 5

//Khởi tạo mảng một chiều kiểu float

float[] arr2 = {1.3, 3.2, 5.5}; //a.length = 3

//Khởi tạo mảng một chiều kiểu double

double[] arr2 = {2.3, 7.2, 9.5};//a.length= 3

//Khởi tạo mảng một chiều kiểu string

String[] ngay = {

"chủ nhật","thứ hai","thứ ba",

"thứ tư","thứ năm","thứ sáu","thứ bảy"

};//a.length= 7

Page 9: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Câu lệnh foreach

9

1

2

3

4

5

System.out.println("Xuất mảng dùng foreach");

System.out.println("Số phần tử của mảng " + a.length);

for (int pt : a){

System.out.println(pt);

}

//tenBien lần lượt là các phần tử bên trong mảng

for (KieuDuLieu tenBien : tenMang){

Các câu lệnh;

}

1

2

3

4

5

System.out.println("Xuất mảng dùng for bình thường");

System.out.println("Số phần tử của mảng " + a.length);

for (int i=0 ; i<a.length; i++){

System.out.println(a[i]);

}

Page 10: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Nhập mảng và xuất mảng một chiều

10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

//Nhập mảng

System.out.print("Số phần tử của mảng là ");

int n = Integer.parseInt(scan.nextLine());

int [] a = new int [n]; //a.Length = n

for (int i = 0; i < a.length; i++) {

System.out.print("a["+i+"]=");

a[i] = Integer.parseInt(scan.nextLine());

}

//Xuất mảng dùng for

System.out.println("Xuất mảng dùng for");

System.out.println("Số phần tử của mảng " + a.length);

for (int i = 0; i < a.length; i++)

{

System.out.println(a[i]);

}

//Xuất mảng dùng foreach

System.out.println("Xuất mảng dùng foreach");

System.out.println("Số phần tử của mảng " + a.length);

for (int pt : a)

{

System.out.println(pt);

}

Page 11: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Tính tổng các phần tử trong mảng một chiều

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

//Tính tổng dùng for

int s = 0;

for (int i = 0; i < a.length; i++)

{

s = s + a[i];

}

System.out.println("s = {0}", s);

//Tính tổng dùng foreach

s = 0;

for (int pt : a)

{

s = s + pt;

}

System.out.println("s = " + s);

Page 12: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Sắp xếp mảng tăng dần (Selection Sort)

12

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

int i, j;

int min, temp;

for (i = 0; i < a.length - 1; i++)

{

min = i;

for (j = i + 1; j < a.length; j++)

{

if (a[j] < a[min])

{

min = j;

}

}

temp = a[i];

a[i] = a[min];

a[min] = temp;

}

Page 13: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bài tập

Viết chương trình cho phép:

– Nhập vào một mảng môt chiều

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

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

– Sắp xếp mảng tăng dần

– Xuất mảng

13

Page 14: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

MẢNG HAI CHIỀU

14

Page 15: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Hình ảnh

15

1 3 5

7 8 6

Task Name3 7 4

2

7

3

0

2

1

0 1 2 3

Chỉ số dòng

Chỉ số cột

Page 16: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khai báo

16

KieuDuLieu [][] tenBien;

Hoặc KieuDuLieu tenBien [][];

1

2

3

4

5

6

7

8

9

10

11

12

//Khai báo mảng hai chiều kiểu int

int[][] arr1;

//Khai báo mảng hai chiều kiểu long

long[][] arr2;

//Khai báo mảng hai chiều kiểu float

float[][] arr3;

//Khai báo mảng hai chiều kiểu double

double[][] arr4;

//Khai báo mảng hai chiều kiểu boolean

boolean[][] arr5;

//Khai báo mảng hai chiều kiểu String

String[][] arr6;

Page 17: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Cấp phát vùng nhớ

17

Cách 1 KieuDuLieu[][] tenMang = new KieuDuLieu [n][m] ;

Cách 2 KieuDuLieu[][] tenMang;

tenMang = new KieuDuLieu [n][m];

n Số dòng : tenMang.length

m Số cột : tenMang[i].length

1 2

3

4

5

6

7

8

9

10

11

12

//Khai báo và cấp phát mảng hai chiều kiểu int

int[][] arr1 = new int[3][5];

int soDong = a.length; //soDong = 3

int soCot = a[i].length; //soCot = 5

//Khai báo và cấp phát mảng kiểu long

long[][] arr2 = new long[5][6];

int soDong = a.length; //soDong = 5

int soCot = a[i].length;; //soCot = 6

//Khai báo và cấp phát mảng hai chiều kiểu float

float[][] arr3 = new float[7][9];

int soCot = a.length; //soDong = 7

int soCot = a[i].length; //soCot = 9

Page 18: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khởi tạo

18

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

//Cách 1

int[][] a = {

{ 1, 2 },

{ 3, 4 },

{ 5, 6 },

{ 7, 8 }

};

int soDong = a.length; //soDong = 4

int soCot = a[i].length; //soCot = 2

//Cách 2

int [][] a = new int[4][2];

int soDong = a.length; //soDong = 4

int soCot = a[0].length; //soCot = 2

int k = 1;

for (int i = 0; i < soDong; i++)

{

for (int j = 0; j < soCot; j++)

{

a[i][j]=k++;

}

}

Page 19: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Nhập mảng hai chiều

19

1

2

3

4

5

6

7

8

9

10

11

12

13

14

//Nhập mảng

int[][] a;

System.out.println("Nhập mảng");

System.out.print("Mời nhập vào số dòng:");

int n = Integer.parseInt(scan.nextLine());

System.out.print("Mời nhập vào số cột:");

int m = Integer.parseInt(scan.nextLine());

a=new int[n][m];

for (int i = 0; i < a.length; i++){

for (int j = 0; j < a[i].length; j++){

System.out.print("a["+i+"]["+j+"]=");

a[i][j] = Integer.parseInt(scan.nextLine());

}

}

Page 20: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Xuất mảng hai chiều

20

1

2

3

4

5

6

7

8

9

10

//Xuất mảng

System.out.println("Xuất mảng");

System.out.println("Số dòng :" + a.length);

System.out.println("Số cột : {0}", a[0].length);

for (int i = 0; i < a.length; i++){

for (int j = 0; j < a[i].length; j++) {

System.out.print(a[i][j]+"\t");

}

System.out.println();

}

Page 21: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Tính tổng các phần tử trong mảng hai chiều

21

1

2

3

4

5

6

7

int s = 0;

for (int i = 0; i < a.length; i++){

for (int j = 0; j < a[i].length; j++){

s = s + a[i][j];

}

}

System.out.println("s=" + s);

Page 22: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bài tập mảng hai chiều

Viết chương trình cho phép

– Nhập mảng

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

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

– Xuất mảng

22

Page 23: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

MẢNG RĂNG CƯA

23

Page 24: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Hình ảnh

24

Page 25: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khai báo

25

KieuDuLieu [][] tenBien;

Hoặc KieuDuLieu tenBien [][];

1

2

3

4

5

6

7

8

9

10

11

12

//Khai báo mảng hai chiều kiểu int

int[][] arr1;

//Khai báo mảng hai chiều kiểu long

long[][] arr2;

//Khai báo mảng hai chiều kiểu float

float[][] arr3;

//Khai báo mảng hai chiều kiểu double

double[][] arr4;

//Khai báo mảng hai chiều kiểu boolean

boolean[][] arr5;

//Khai báo mảng hai chiều kiểu String

String[][] arr6;

Page 26: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Cấp phát vùng nhớ

26

Cách 1 KieuDuLieu[][] tenMang = new KieuDuLieu [n][] ;

Cách 2 KieuDuLieu[][] tenMang;

tenMang = new KieuDuLieu [n][];

n Số dòng : tenMang.length

1

2

3

4

5

6

7

8

9

//Khai báo và cấp phát mảng răng cưa hai chiều kiểu int

int[][] arr1 = new int[3][];

int soDong = a.length; //soDong = 3

//Khai báo và cấp phát mảng răng cưa hai chiều kiểu long

long[][] arr2 = new long[5][];

int soDong = a.length; //soDong = 5

//Khai báo và cấp phát mảng răng cưa hai chiều kiểu float

float[][] arr3 = new float[7][];

int soCot = a.length; //soDong = 7

Page 27: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Khởi tạo

27

1

2

3

4

5

6

7

8

int[][] a = {

{ 1, 2 },

{ 3, 4, 5 },

{ 5, 6 , 7, 8 },

{ 7, 8 ,9 ,10 }

};

int soDong = a.length; //soDong = 4

int soCot = a[i].length; //soCot thứ i

Page 28: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Nhập mảng răng cưa hai chiều

28

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//Nhập mảng

int[][] a;

System.out.println("Nhập mảng");

System.out.print("Mời nhập vào số dòng:");

int n = Integer.parseInt(scan.nextLine());

a=new int[n][];

for (int i = 0; i < a.length; i++){

System.out.print("Mời nhập vào số cột của dòng "+i);

int m = Integer.parseInt(scan.nextLine());

a[i]=new int[m];

for (int j = 0; j < a[i].length; j++) {

System.out.print("a["+i+"]["+j+"]=");

a[i][j] = Integer.parseInt(scan.nextLine());

}

}

Page 29: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Xuất mảng răng cưa hai chiều

29

1

2

3

4

5

6

7

8

9

10

//Xuất mảng

System.out.println("Xuất mảng");

System.out.println("Số dòng" + a.length);

for (int i = 0; i < a.length; i++){

System.out.println("Số cột dòng "+i+ a[i].length);

for (int j = 0; j < a[i].length; j++){

System.out.print(a[i][j]+"\t");

}

System.out.println();

}

Page 30: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

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

30

1

2

3

4

5

6

7

int s = 0;

for (int i = 0; i < a.length; i++){

for (int j = 0; j < a[i].length; j++){

s = s + a[i][j];

}

}

System.out.println("s=" + s);

Page 31: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bài tập mảng răng cưa hai chiều

Viết chương trình cho phép

– Nhập mảng

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

– Tìm dòng có tổng các phần tử lớn nhất

– Xuất mảng

31

Page 32: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Tài liệu tham khảo

Nguyễn Hoàng Anh, Tập slide bài giảng và video môn

Lập Trình Java, ĐH KHTN, 2010

The Java Language Specification Third Edition (2005)

Page 33: 03. Java Programming - Array

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

HỎI VÀ ĐÁP

33