Chapter6

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Chapter6 as PDF for free.

More details

  • Words: 914
  • Pages: 5
CS313: Object-Oriented Programming

บทที่ 6: Arrays

บทที่ 6 Arrays 6.1 การประกาศตัวแปรชุด (Arrays) รูปแบบ type[ ] variableName; type variableName[ ];

ยังไมมีการจองเนื้อที่

type[ ] variableName = new type[length]; type variableName[ ] = new type[length]; ตัวอยาง แบบที่ 1

มีการจองเนื้อที่

int c[ ]; c = new int [12];

// การประกาศ array // การจองเนื้อที่ array

แบบที่ 2

int c[ ] = new int [12];

// รวม 2 คําสั่งในแบบที่ 1 ใหอยูภายในคําสั่งเดียว

แบบที่ 3

String b[ ] = new String[100], x[ ] = new String[27]; // การประกาศตัวแปรชุด 2 ชุดใน คําสั่งเดียว subscript ของตัวแปรชุด จะเริ่มจาก 0 ซึ่งเหมือนกับภาษา C

เมือ่ มีการสรางตัวแปรชุด จะมีการกําหนดคาเริ่มตนตามประเภทของขอมูล เชน ขอมูลประเภท int, double, long จะมีคาเริ่มตนเทากับ 0 ขอมูลประเภท boolean จะมีคาเริ่มตนเทากับ false ขอมูลที่เปน object จะมีคาเริ่มตนเทากับ null ตัวอยางที่ 1 public class InitArray { public static void main (String args[]) { int n[]; // declare reference to an array n = new int[10]; // dynamically allocate array System.out.println(“Subscript\tValue”); for (int j = 0; j
2/2545

1

CS313: Object-Oriented Programming

บทที่ 6: Arrays

การกําหนดคาเริ่มตนใหกับตัวแปรชุดเอง มีรูปแบบดังตัวอยางตอไปนี้ ตัวอยางรูปแบบ int data[ ] = {10, 20, 30, 40, 50 }; Sring month_name[ ] = {“January”, “February”, “March”, “April”}; จํานวนสมาชิกในตัวแปรชุดที่ถูกกําหนดคาเริ่มตนโดยผูเขียนโปรแกรม จะเทากับจํานวนคาเริ่มตนที่ กําหนด เชนจากตัวอยางการประกาศตัวแปรชุดชื่อ data จะมีสมาชิกทั้งหมด 5 ตัว โดย subscript จะเริ่มจาก 0, 1, 2, 3 และ 4 กลาวคือ data[0] เทากับ 10 data[1] เทากับ 20 เปนตน สวนตัวอยางของการประกาศตัว แปรชุดชื่อ month_name จะมีสมาชิกทั้งหมด 4 ตัว โดยที่ month_name[0] มีคา January และ month_name [1] มีคา February ในกรณีทตี่ อ งการหาจํานวนสมาชิก หรือขนาดของตัวแปรชุด ทําไดโดยการเรียกใช method ชื่อ length เชน data.length จะ return คา 5 สวน month_name.length จะ return คา 4 มาให ตัวอยางที่ 2 public class InitArray { public static void main (String args[]) { // initialiser list specifies number of elements and value for each element. int n[] = {32, 27, 64, 18, 95, 14, 90, 70, 60, 37}; System.out.println(“Subscript\tValue”); for (int j = 0; j
ตัวอยางที่ 3 class Histogram ถูกสรางขึ้นมาเพื่อพิมพ '*' เทากับจํานวนตัวเลขที่สมาชิกแตละตัวของตัวแปรชุด n เก็บไว public class Histogram { public static void main (String args[]) { int n[] = {19, 3, 15, 7, 11, 9, 13, 5, 17, 1}; System.out.println(“Element\tValue\tHistogram”); for (int j = 0; j
2/2545

2

CS313: Object-Oriented Programming

บทที่ 6: Arrays

ตัวอยางที่ 4 เปนตัวอยางการใช method random() ของ class Math ในการจําลองการทอยลูกเตาจํานวน 6000 ครั้ง และเก็บสถิติของแตมที่ไดจากการทอยลูกเตาแตละครั้ง public class RollDie { public static void main (String args[]) { int face, frequency[] = new int[7]; for ( int roll = 1; roll <=6000; roll++) { face = 1 + (int) (Math.random() * 6); ++frequency[face]; } System.out.println(“Face\tFrequency”); for (face= 0; face
6.2 การสงและรับคาตัวแปรชุดใหกับ method การสงและรับคาตัวแปรชุด ทําไดโดยการอางอิงชื่อตัวแปรชุด ไมตองระบุ subscript แตหากตองการ สงผานคาเฉพาะสมาชิกบางตัว ตองระบุ subscript ของสมาชิกตัวนั้นๆ ที่ตองการ ตัวอยางที่ 5 public class PassArray { public static void main (String args[]) { int a[] = {1, 2, 3, 4, 5}; System.out.println(“Effects of passing entire “ + “array call-by-reference:\n\n” + “The values of the original array are: "); for (int j=0; j
2/2545

3

CS313: Object-Oriented Programming

บทที่ 6: Arrays

ตัวอยางที่ 5 (ตอ) System.out.println(“a[3] after modifyElement: “ + a[3]); } // end method main public static void modifyArray (int b[]) { for (int j=0; j
สังเกต output ของตัวอยางที่ 5 จะพบขอแตกตางระหวางการสงผาน array ไปทั้งชุด ซึ่งเสมือนเปน การสงผานตัวแปรแบบ pass-by-reference และการสงผานเพียงคาของสมาชิกบางตัว ซึง่ จะมีผลเชนเดียวกับ การสงผานตัวแปรแบบ pass-by-value 6.3 การประกาศและใชงานตัวแปรชุดหลายมิติ ตัวอยางการอางอิงตําแหนงสมาชิกตางๆ ของตัวแปรชุดชื่อ A ซึง่ มีขนาด 3 แถว 4 คอลัมน Row 0 Row 1 Row 2

Column 0 A[0][0] A[1][0] A[2][0]

Column 1 A[0][1] A[1][1] A[2][1]

Column 2 A[0][2] A[1][2] A[2][2]

Column 3 A[0][3] A[1][3] A[2][3]

การประกาศและกําหนดคาเริ่มตนของตัวแปรชุดหลายมิติ ทําไดเหมือนกับตัวแปรชุดมิติเดียว ดังตัว อยางตอไปนี้ int b[ ] [ ] = { {1, 2}, {3, 4} }; จากตัวอยางนี้ b เปนตัวแปรชุด 2 มิติ ขนาด 2x2 โดยการอางอิงและคาที่กําหนดใหกับสมาชิกแตละ ตัว มีดังนี้ b[0][0] = 1 b[0][1] = 2 b[1][0] = 3 b[1][1] = 4 ในภาษา Java การประกาศตัวแปรชุด จะมีการจัดการแบบ object การเรียกหรือประมวลผลตัวแปร จะใชแบบอางอิง ดังนั้นตัวแปรชุดหลายมิติในภาษา Java ไมจาเป ํ นตองมีขนาดเทากัน ดังตัวอยางตอไปนี้

2/2545

4

CS313: Object-Oriented Programming

บทที่ 6: Arrays

int b[ ] [ ] = { {1, 2}, {3, 4, 5} }; เปนการประกาศตัวแปรชุดชื่อ b ซึง่ มี 2 แถว แถวที่ 0 ประกอบดวยสมาชิก 2 ตัวคือ 1 และ 2 สวน แถวที่ 1 มีสมาชิก 3 ตัว คือ 3, 4 และ 5 ในการประกาศตัวแปรชุดที่ไมมีการกําหนดคาเริ่มตนให หากเปนตัวแปรที่มีจํานวนคอลัมนเทากันใน ทุกแถว ทําไดดังตัวอยางนี้ int b[ ] [ ]; b = new int [3] [3]; เปนการประกาศตัวแปรชุดชื่อ b ซึง่ มี 3 แถว และ 3 คอลัมนในทุกแถว ในกรณีทจี่ านวนคอลั ํ มนในแตละแถวไมเทากัน สามารถประกาศได ดังตัวอยางตอไปนี้ int b[ ] [ ]; b = new int [2] [ ]; // allocate rows b[0] = new int [5]; // allocate columns for row 0 b[1] = new int [3]; // allocate columns for row 1 ตัวอยางที่ 6 public class InitArray { public static void main (String args[]) { int array1[][] = { {1, 2, 3}, {4, 5, 6} }; int array2[][] = { {1, 2}, {3}, {4, 5, 6} }; System.out.println(“Values in array1 by row are”); buildOutput(array1); System.out.println(“Values in array2 by row are”); buildOutput(array2); } // end main public static void buildOutput( int a[][] ) { for (int j=0; j
2/2545

5

Related Documents

Chapter6
November 2019 29
Chapter6
November 2019 25
Chapter6
May 2020 12
Chapter6
October 2019 25
Chapter6
June 2020 12
Chapter6
July 2020 13