SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
One Dimensional Arrays - 07                                                           Computer Programming using Java                     77
  CHAPTER                                                        อาเรย์หนึ่งมิติ
      07                                                    (One Dimensional Arrays)
1. ความร้ ูเบืองต้ นเกี่ยวกับอาเรย์ (Introduction to Arrays)
              ้
1. นิยามของอาเรย์
   1) อาเรย์ (Arrays) คือ โครงสร้ างข้ อมูลประเภทหนึ่งที่ใช้ เก็บรายการของข้ อมูลประเภทเดียวกัน โดยเก็บ
       ข้ อมูลทังหมดเรี ยงต่อกันไปในหน่วยความจํา เสมือนนําข้ อมูลเก็บไว้ ใน "ช่ อง" ที่วางเรี ยงกัน เช่น
                ้

            6        1       7       9
                                                 'C'             ไม่สนใจว่าช่องของอาเรย์จะวางเรี ยงกันในแนวตังหรื อแนวนอน ซึง
                                                                                                              ้                 ่
                                                 'U'             จะเรี ยกว่าอาเรย์ทงหมด โดยแต่ละช่องจะเก็บข้ อมูลได้ เพียง 1 ค่า
                                                                                   ั้

    2) ตําแหน่ งของอาเรย์ อาเรย์แต่ละชุดจะมีชื่อของอาเรย์และหมายเลขช่องที่ระบุตําแหน่ง (Index) ของข้ อ-
       มูลในอาเรย์แต่ละตัว ซึงจะเริ่มต้ นที่ตําแหน่งที่ 0 (Zero Index) เสมอ (เหมือนกับสตริ ง)
                             ่
            0        1       2       3
            6        1       7       9            ตําแหน่ง (Index) เริ่มที่ 0 แต่ลําดับ (Order) เริ่มที่ 1

    3) ขนาดหรื อความยาวของอาเรย์ คือ จํานวนสมาชิกหรื อจํานวนข้ อมูลที่เก็บอยูในอาเรย์ชดนัน
                                                                            ่         ุ ้
            0        1       2       3
            6        1       7       9            อาเรย์ยาว 4 (มีสมาชิก 4 ตัว)

    4) มิตของอาเรย์ สามารถมีได้ ไม่จํากัด เช่นอาเรย์หนึ่งมิติ สองมิติ สามมิติ หรื อ n มิติ แต่โดยทัวไปแล้ วเรา
          ิ                                                                                        ่
       นิยมใช้ อาเรย์หนึงมิตและอาเรย์สองมิติ ซึงในบทนี ้จะนําเสนออาเรย์หนึงมิติ
                        ่ ิ                    ่                          ่
            6        1           2       1

            หนึงมิติ
               ่                 7       0                                     สามมิติ
                                                        9    4
                                 สองมิติ                5    3


2. การประกาศและสร้ างอาเรย์ หนึ่งมิติ
1. การประกาศและสร้ างอาเรย์ หนึ่งมิตโดยใช้ Initialized List
                                        ิ
   การประกาศและสร้ างอาเรย์หนึ่งมิติโดยใช้ Initialized List เป็ นการสร้ างอาเรย์แบบง่าย ซึงจะประกาศใช้ ได้ ก็
                                                                                             ่
   ต่อเมื่อทราบค่าทุกค่าที่จะเก็บลงไปในอาเรย์แล้ ว โดยมีรูปแบบคําสังดังนี ้ หลังชื่ออาเรย์ต้องมีสญลักษณ์ []
                                                                   ่                             ั
     <ประเภทข้ อมูล> <ชื่ออาเรย์>[] = { สมาชิก ,..., สมาชิก };                                    สมาชิกแต่ละตัวคันด้ วย Comma
                                                                                                                  ่

    เช่น   int a[] = {34, 56, 52, 12, 90, 0, 75, 23, 45, 8}; ซึงจะได้ เป็ นโครงสร้ างดังนี ้
                                                               ่
       0        1        2       3           4      5       6         7       8          9
      34        56       52      12        90       0       75       23      45        8         มีสมาชิก 10 ตัว แต่ตําแหน่งสูงสุดคือ 9

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
78     Computer Programming using Java                                                   07 - One Dimensional Arrays


         ค่าสมาชิกแต่ละตัวของอาเรย์สามารถอ้ างอิงหรื อเรี ยกชื่อได้ โดยใช้ คําสัง <ชื่ออาเรย์ >[<ตําแหน่ ง>] เช่น
                                                                                ่
             0      1      2     3        4       5   6       7       8       9
            a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

     โจทย์ ข้อที่ 1 [ระดับง่ าย] จงหาผลลัพธ์ จากส่ วนของโปรแกรมต่ อไปนี ้ โดยกําหนดให้ โปรแกรมสามารถ
     ทํางานจนจบได้ แม้ มี Error พร้ อมทังแสดงผลลัพธ์ สุดท้ ายของสมาชิกในอาเรย์ แต่ ละช่ อง (8 คะแนน)
                                        ้
       1     int i = 3;
       2     int a[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };
       3     System.out.println(a[0] + a[6]);
       4     System.out.println(a[1] * --a[4]);
       5     System.out.println(a[9]++);
       6     System.out.println(a[10] + a[4]);
       7     System.out.println(a[1]++ + a[0]);
       8     System.out.println(a[5 + 3]);
       9     System.out.println(--a[2*i] + a[1]++);
       10    System.out.println(a[1] + a[4] + a[9]);

                                      0           1    2          3       4       5        6        7         8        9
     ค่าของสมาชิกแต่ละช่องคือ

     2. การประกาศและสร้ างอาเรย์ หนึ่งมิตโดยการ new
                                         ิ
        การประกาศและการสร้ างอาเรย์โดยการ new นี ้จะเป็ นวิธีแบบทัวไปที่ใช้ ในการเขียนโปรแกรมภาษาจาวา ซึงมี
                                                                  ่                                     ่
        ขันตอนดังต่อไปนี ้
          ้
        1) การประกาศตัวแปรอาเรย์หนึงมิติ
                                    ่
                 <ประเภทข้ อมูล> <ชื่ออาเรย์>[];                              หลังชื่ออาเรย์ต้องมีเครื่ องหมาย []

             เช่น
                                              a
                    int a[];

         2) การสร้ างอาเรย์หนึงมิติ
                              ่                                               หลังชื่ออาเรย์ไม่ต้องมีเครื่ องหมาย []
                 <ชื่ออาเรย์> = new <ประเภทข้ อมูล>[<ขนาด>];                      ระบุขนาดหรื อจํานวนช่องของอาเรย์
                                                                                  (ไม่ใช่ตําแหน่ง)
             เช่น   a = new int[3];
                                              a        0      1       2
                                                       0     0        0

         3) อาเรย์หนึงมิตที่ได้ หลังจากการประกาศและการสร้ าง
                     ่ ิ                                                      มีคาเริ่มต้ นของทุกช่องเป็ น 0 (ประเภท int)
                                                                                 ่

                 a[0]   a[1]   a[2]


         4) การประกาศและการสร้ างอาเรย์หนึงมิตโดยรวมขันตอนที่ 1 และ 2 เข้ าด้ วยกัน (มี 2 วิธีให้ เลือกใช้ )
                                          ่ ิ         ้
                 <ประเภทข้ อมูล> <ชื่ออาเรย์>[] = new <ประเภทข้ อมูล>[<ขนาด>];                          เครื่ องหมาย []
                                                                                                        จะอยูหน้ าหรื อหลัง
                                                                                                                ่
                 <ประเภทข้ อมูล> []<ชื่ออาเรย์> = new <ประเภทข้ อมูล>[<ขนาด>];                          ชื่ออาเรย์ก็ได้

             เช่น   int a[] = new int[3];

     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                           Computer Programming using Java                79
    5) ข้ อสังเกตในการประกาศและสร้ างอาเรย์หนึงมิติ   ่
            ขนาดของอาเรย์ถกระบุตอนสร้ างอาเรย์ ถ้ าต้ องการให้ อาเรย์มีกี่ช่องก็ให้ ระบุจํานวนช่องลงไป ซึงส่วนนี ้
                                  ู                                                                       ่
            ไม่ใช่ตาแหน่งของอาเรย์ (อย่าสับสน) ลําดับของอาเรย์เริ่มนับที่ 1 แต่ตําแหน่งของอาเรย์เริ่มนับที่ 0
                   ํ
            ขนาดของอาเรย์เป็ นค่าของนิพจน์ได้ เช่น int data[] = new int[3 * n + 1]; เป็ นต้ น
            อาเรย์ที่สร้ างขึ ้น ไม่สามารถเพิ่มหรื อลดขนาดได้ (สร้ างแล้ วต้ องใช้ อย่างเดิมตลอดไป)
            ระบบจะตังค่าเริ่ มต้ นของข้ อมูลให้ กบอาเรย์ทกช่องโดยอัตโนมัตเิ มื่อเริ่มสร้ างอาเรย์ตามชนิดของอาเรย์
                         ้                          ั     ุ
            เช่น double a[] = new double[5]; จะได้ อาเรย์ 5 ช่องโดยมีคาเริ่มต้ นของทุกช่องเป็ น 0.0
                                                                                       ่
3. การหาขนาดและความยาวของอาเรย์ หนึ่งมิติ
   การหาขนาดของอาเรย์จะใช้ คําสัง .length โดยระบุเข้ าไปหลังชื่ออาเรย์โดยไม่ต้องใส่วงเล็บ ดังรูปแบบต่อไปนี ้
                                ่
     <ชื่ออาเรย์>.length

    อย่าจําสับสนกับเมท็อดที่ใช้ หาความยาวของสตริ งซึงใช้ .length() เช่นเดียวกัน ดังตัวอย่าง
                                                    ่
     1     int a[] = new int[5];                                      หลัง length ไม่ใส่วงเล็บ
     2     System.out.println(a.length);
     3     String s = "JAVA!";
     4     System.out.println(s.length());                            หลัง length ใส่วงเล็บ
     5     int b[] = new int[12];
     6     System.out.println(b.length());                              Error


โจทย์ ข้อที่ 2 [ระดับง่ าย] จงเขียนคําสั่งภาษาจาวาเพื่อประกาศและสร้ างอาเรย์ ต่อไปนี ้ (12 คะแนน)
1) สร้ างอาเรย์ ช่ ือ num เก็บข้ อมลตัวเลขจํานวนเต็มที่ยาว 15 หลักขึนไป จํานวน 200 ค่ า (2 คะแนน)
                                   ู                                ้


2) สร้ างอาเรย์ ช่ ือ dice เก็บหมายเลขหน้ าของลกเต๋ า (2 คะแนน)
                                               ู


3) สร้ างอาเรย์ ช่ ือ avgGrade เก็บผลการเรี ยนเฉลี่ยของนิสิตจํานวน 451 คน (2 คะแนน)


4) สร้ างอาเรย์ ช่ ือ grade เก็บผลการเรี ยนรายวิชา 2110101 ของนิสิตจํานวน 369 คน (2 คะแนน)


5) สร้ างอาเรย์ ช่ ือ x เก็บค่ าความจริง ซึ่งมีตาแหน่ งสงสุดของช่ องสมาชิกคือตําแหน่ งที่ 10 (2 คะแนน)
                                                ํ       ู


6) สร้ างอาเรย์ ช่ ือ merge เก็บข้ อมลที่ได้ จากการนําอาเรย์ ในข้ อที่ 1 มาต่ อกับอาเรย์ ในข้ อที่ 2 (2 คะแนน)
                                     ู



© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
80     Computer Programming using Java                                                  07 - One Dimensional Arrays


     4. การอ้ างอิงค่ า การกําหนดค่ า และการแสดงผลของอาเรย์ หนึ่งมิติ
        1) การอ้ างอิงค่ าจากอาเรย์ มีรูปแบบคําสังดังนี ้
                                                 ่
              <ประเภทข้ อมูล> <ชื่อตัวแปร> = <ชื่ออาเรย์>[<ตําแหน่ง>];


             เช่น   int n = num[0]; (ให้ ตวแปร n ประเภทจํานวนเต็ม เก็บค่าจากอาเรย์ num ตําแหน่งที่ 0)
                                          ั
         2) การกําหนดค่ าลงไปในอาเรย์ มีรูปแบบคําสังดังนี ้
                                                   ่
              <ชื่ออาเรย์>[<ตําแหน่ง>] = <ค่าข้ อมูล>;


             เช่น   num[0] = 13; (ให้ อาเรย์ num ตําแหน่งที่ 0 มีคาเท่ากับ 13)
                                                                  ่
         3) การแสดงผลของอาเรย์ จะใช้ คําสัง for ในการเข้ าไปยังสมาชิกแต่ละตัวในอาเรย์ตงแต่ตวแรก (ตําแหน่งที่
                                                 ่                                              ั้ ั
            0) จนถึงตัวสุดท้ าย (ตําแหน่งที่ length - 1) ดังตัวอย่างต่อไปนี ้ ต้ องเขียน a.length ไม่ควรเขียนเป็ นตัว
              1       int a[] = new int[5];                                 เลข และต้ องเป็ นเครื่ องหมาย < ไม่ใช่ <=
              2       for(int i = 0; i < a.length; i++) {
              3         a[i] = 100;
              4       }                      i ต้ องเริ่ มที่ 0 ไม่ใช่ 1 (วนตําแหน่งของอาเรย์ ไม่ใช่วนลําดับ)


     โจทย์ ข้อที่ 3 [ระดับง่ าย] จงเขียนคําสั่งภาษาจาวาเพื่ออ้ างอิงและกําหนดค่ าจากอาเรย์ ต่อไปนี ้ โดยสมมุตให้
                                                                                                             ิ
     อาเรย์ ในทุกข้ อมีการประกาศและสร้ างเรี ยบร้ อยแล้ วพร้ อมทังมีค่าข้ อมลครบทุกช่ อง (12 คะแนน)
                                                                     ้      ู
     1) ประกาศตัวแปร x เพื่อเก็บข้ อมลประเภทจํานวนเต็มที่ได้ จากอาเรย์ num ตัวที่ 50 (2 คะแนน)
                                           ู


     2) ประกาศตัวแปร y เพื่อเก็บข้ อมลประเภทจํานวนเต็มที่ได้ จากอาเรย์ num ตําแหน่ งที่ 50 (2 คะแนน)
                                     ู


     3) ประกาศตัวแปร c เพื่อเก็บข้ อมลประเภทอักขระที่ได้ จากอาเรย์ code ตําแหน่ งสุดท้ าย (2 คะแนน)
                                     ู


     4) ให้ ค่าสมาชิกตําแหน่ งที่ 12 ของอาเรย์ bank เก็บข้ อมลประเภทตรรกะจากตัวแปร var1 (2 คะแนน)
                                                             ู
         boolean var1 = 5 > 6;



     5) ให้ ค่าสมาชิกตัวที่ 1 ของอาเรย์ bank เก็บข้ อมลประเภทจํานวนจริงจากตัวแปร var2 (2 คะแนน)
                                                      ู
         double var2 = kb.nextDouble();



     6) ให้ ค่าสมาชิกตัวรองสุดท้ ายของอาเรย์ bank เก็บข้ อมลประเภทอักขระจากตัวแปร var3 (2 คะแนน)
                                                           ู
         char var3 = "java".charAt(3);



     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                         Computer Programming using Java              81
โจทย์ ข้อที่ 4 [ระดับง่ าย–ปานกลาง] จงเขียนส่ วนของโปรแกรมภาษาจาวาตามคําสั่งต่ อไปนี ้ (55 คะแนน)
1) สร้ างอาเรย์ ช่ ือ n แบบ Initialed List เพื่อเก็บเลขคี่ท่ ีอย่ ูในช่ วง 1 ถึง 20 พร้ อมทังแสดงค่ าของตัวเลข
                                                                                            ้
   ทุกตัวในอาเรย์ n ขึนบนจอภาพทีละบรรทัด (5 คะแนน)
                          ้




2) สร้ างอาเรย์ ช่ ือ m ขนาด 1000 ช่ อง พร้ อมทังกําหนดค่ าให้ กับสมาชิกทุกตัวในอาเรย์ m ให้ มีค่าเป็ น
                                                ้
   ตัวเลขตังแต่ 1-1000 เรี ยงลําดับจากสมาชิกตัวแรกจนถึงสมาชิกตัวสุดท้ ายของอาเรย์ m (5 คะแนน)
            ้




3) สร้ างอาเรย์ ช่ ือ a เพื่อเก็บตัวเลขจํานวนจริงใดๆ ที่รับมาจากแปนพิมพ์ จานวน 100 ตัว (5 คะแนน)
                                                                  ้       ํ
    Scanner kb = new Scanner(System.in);




4) นับจํานวนเลขคี่และค่ ท่ เก็บอย่ ในอาเรย์ x ว่ ามีอย่ างละกี่จานวนแล้ วแสดงผลขึนบนจอภาพ (10 คะแนน)
                        ู ี        ู                            ํ                ้
    int x[] = { 7, 9, -1, 4, 12, 9, 3, 2, -7, 2, 1, 9, -15, 24, 11, 13 };




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
82     Computer Programming using Java                                              07 - One Dimensional Arrays


     5) รับตัวเลขจํานวนเต็มจากแปนพิมพ์ เก็บไว้ ในตัวแปร x แล้ วค้ นหาว่ า ค่ าสมาชิกตําแหน่ งแรกในอาเรย์
                                     ้
        num ที่มีค่าเท่ า x คือตําแหน่ งใด พร้ อมทังแสดงผลลัพธ์ ขึนบนจอภาพ (10 คะแนน)
                                                   ้              ้
         int num[] = { 3, 2, 1, 10, 2, 8, 3, 2, 1, 1, 8, 5, 10, 11, 7, 6, 10 };
         Scanner kb = new Scanner(System.in);
                                                                        ถ้ าค้ นหาไม่ เจอให้ แสดงผลลัพธ์ เป็ นค่ า -1




     โจทย์ ข้อที่ 5 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการผสาน (Merge) ข้ อมล
                                                                       ู                                ู
     ในอาเรย์ a และอาเรย์ b ซึ่งเป็ นจํานวนเต็มเข้ าเป็ นอาเรย์ เดียวกันในอาเรย์ ช่ ือ ab พร้ อมทังแสดงค่ า
                                                                                                  ้
     สมาชิกของอาเรย์ ab (10 คะแนน)
     import java.util.Scanner;
     public class MergeArrays {
       public static void main(String[] args) {
         int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
         int b[] = { 1, 4, 6, 8, 10, 12 };




       } //End of main
     } //End of class

     โจทย์ ข้อที่ 6 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อรับตัวเลขจํานวนเต็มจากแปนพิมพ์
                                                                      ู                                  ้
     เก็บไว้ ในตัวแปร x แล้ วทําการแบ่ ง (Split) ค่ าสมาชิกในอาเรย์ num ออกเป็ นอาเรย์ ใหม่ โดยถ้ าค่ าสมาชิก
     มีค่ามากกว่ าหรือเท่ ากับ x ให้ เก็บไว้ ในอาเรย์ upper ไม่ เช่ นนันให้ เก็บไว้ ในอาเรย์ lower (10 คะแนน)
                                                                        ้
     import java.util.Scanner;
     public class SplitArray {
       public static void main(String[] args) {

     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                        Computer Programming using Java              83
     int num[] = {95, 1, 6, 34, 5, 9, 123, -2, 57, 82, 12, 79, 45, 34, 1};




  } //End of main
} //End of class


โจทย์ ข้อที่ 7 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการกลับค่ าสมาชิกในอาเรย์
                                                                    ู
(Reverse Array) ที่ช่ ือ num จากหลังมาหน้ า แล้ วเก็บค่ าไว้ ในอาเรย์ ตวเดิม โดยในการเขียนโปรแกรมห้ าม
                                                                       ั
ประกาศอาเรย์ ตวใหม่ เพิ่มโดยเด็ดขาด (10 คะแนน)
                 ั
import java.util.Scanner;
public class ReverseArray {
  public static void main(String[] args) {
    int num[] = {95, 1, 6, 34, 5, 9, 123, -2, 57, 82, 12, 79, 45, 34, 1};




  } //End of main
} //End of class


โจทย์ ข้อที่ 8 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อตรวจสอบและแสดงข้ อความว่ า
                                                               ู
อาเรย์ a และอาเรย์ b เท่ ากันหรื อไม่ โดยการเท่ ากันของอาเรย์ คือ ความยาวของอาเรย์ ต้องเท่ ากัน และ
สมาชิกทุกตัวตําแหน่ งต่ อตําแหน่ งต้ องเท่ ากัน (10 คะแนน)
© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
84     Computer Programming using Java                                             07 - One Dimensional Arrays


     import java.util.Scanner;
     public class EqualityOfArrays {
       public static void main(String[] args) {
         int a[] = { 1, 2, 3, 4, 5, 6, 7 }, b[] = { 1, 2, 3, 5, 5, 7, 7 };




       } //End of main
     } //End of class


     โจทย์ ข้อที่ 9 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการรั บค่ าตัวเลขจํานวนเต็มจาก
                                                                   ู
     แปนพิมพ์ เก็บไว้ ในตัวแปร key เพื่อค้ นหาว่ าค่ าของตัวแปร key ปรากฏเป็ นลําดับรองสุดท้ ายที่ ตาแหน่ ง
       ้                                                                                            ํ
     ใดในอาเรย์ num โดยถ้ าค้ นเจอให้ แสดงตําแหน่ งนัน แต่ ถ้าไม่ เจอให้ แสดงค่ า -1 (10 คะแนน)
                                                        ้
     import java.util.Scanner;
     public class LastSecondSearch {
       public static void main(String[] args) {
         int num[] = { 3, 2, 1, 10, 2, 8, 3, 2, 1, 1, 8, 5, 10, 11, 7, 6, 10 };




       } //End of main
     } //End of class

     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                            Computer Programming using Java                85
3. การประยุกต์ ใช้ อาเรย์ (Applications of Array)
1. การเรียงลําดับแบบเลือก (Selection Sort) (ดูการสาธิตตัวอย่างการจัดเรี ยงในโจทย์ข้อที่ 10)
      1      for (int i = data.length - 1; i >= 1; i--) {                         จํา
      2        int maxIndex = 0;
      3        for (int j = 0; j <= i; j++)
      4          if (data[j] > data[maxIndex]) maxIndex = j;                  เรี ยงจากน้ อยไปหามาก
      5        int temp = data[i];
      6        data[i] = data[maxIndex];      เลือกค่าที่สนใจในแต่ละรอบ ซึงอาจจะเป็ นค่ามาก
                                                                               ่
      7        data[maxIndex] = temp;
      8      }                                ที่สดหรื อค่าน้ อยที่สดในรอบนัน เพื่อจัดเรี ยง
                                                  ุ                 ุ       ้

          คําสัง for i ชันนอก เป็ นการกําหนดช่องหรื อเลือกช่องตําแหน่งที่ i ที่ต้องการจะเรี ยงลําดับ
               ่         ้
          คําสัง for j ชันใน เป็ นการหาค่าสมาชิกที่สงสุดตังแต่ช่องแรกจนถึงช่องตําแหน่งที่ i ที่เลือกไว้ เพื่อจะได้
                 ่         ้                         ู    ้
          สลับค่าสูงสุดไปไว้ ในช่องตําแหน่งที่ i นัน
                                                   ้

2. การเรียงลําดับแบบฟอง (Bubble Sort) (ดูการสาธิตตัวอย่างการจัดเรี ยงในโจทย์ข้อที่ 10)
     1       for (int i = data.length - 1; i >= 1; i--) {                      จํา
     2         for (int j = 0; j < i; j++) {
     3           if (data[j] > data[j + 1]) {         เรี ยงจากน้ อยไปหามาก
     4             int temp = data[j];
     5             data[j] = data[j + 1];
     6             data[j + 1] = temp;        จับค่ ูและขยับค่าที่สนใจในแต่ละรอบ อาจจะเป็ นค่า
     7           }
     8         }                              มากหรื อค่าน้ อยของคูนน เพื่อจัดเรี ยง
                                                                     ่ ั้
     9       }


          คําสัง for i ชันนอก เป็ นการกําหนดช่องตําแหน่งที่ i ที่ต้องการจะเรี ยงลําดับ
               ่         ้
          คําสัง for j ชันใน เป็ นการเปรี ยบเทียบค่าเป็ นคูๆ เริ่ มตังแต่ช่องแรกจนถึงช่องตําแหน่งที่ i ที่กําหนดไว้
                 ่          ้                                ่       ้
          เพื่อจะขยับค่าหรื อดันค่าสมาชิกที่สงสุดไปไว้ ในช่องตําแหน่งที่ i นัน (เหมือนฟองสบูที่ลอยขึ ้นไปเรื่ อยๆ)
                                             ู                               ้              ่

โจทย์ ข้อที่ 10 [ระดับง่ าย] จงแสดงรายละเอียดในแต่ ละรอบของการจัดเรี ยงแบบเลือก (Selection Sort)
และรายละเอียดของรอบที่ 1 และรอบที่ 2 ของการจัดเรี ยงแบบฟอง (Bubble Sort) จากชุดข้ อมลในอา-
                                                                                         ู
เรย์ x ต่ อนีให้ ถกต้ อง โดยให้ จัดเรี ยงข้ อมลจากน้ อยไปมาก (20 คะแนน)
             ้ ู                              ู
int x[] = {30, 45, 23, 2, 19, 14, 5, 99, 9};
   30           45        23          2         19        14          5         99         9

การจัดเรี ยงแบบเลือก
รอบที่ 1

รอบที่ 2


© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
86     Computer Programming using Java                                             07 - One Dimensional Arrays


     รอบที่ 3

     รอบที่ 4

     รอบที่ 5

     รอบที่ 6

     รอบที่ 7

     รอบที่ 8


     การจัดเรี ยงแบบฟอง
     รอบที่ 1




     รอบที่ 2




     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                             Computer Programming using Java                87



3. การสืบค้ นแบบทวิภาค (Binary Search)
   เป็ นการค้ นข้ อมูลโดยการแบ่งครึ่งข้ อมูลในอาเรย์ แล้ วพิจารณาเพื่อตัดข้ อมูลออกไปครึ่งหนึง (ครึ่งซ้ ายหรื อครึ่ง
                                                                                             ่
   ขวาของอาเรย์) โดยข้ อมูลต้ องจัดเรี ยงก่อนเสมอ ซึงมีอลกอริทมในการสืบค้ นดังนี ้ (กําหนดให้ อาเรย์ชื่อ data)
                                                      ่ ั       ึ
      1     int left = 0, right = data.length - 1, mid = 0;
      2     while (left <= right) {
      3       mid = (left + right) / 2;                  left คือ ตําแหน่งทางซ้ ายของชุดข้ อมูล
      4       if (key == data[mid]) {
      5         break;                                   right คือ ตําแหน่งทางขวาของชุดข้ อมูล
      6       } else if (key < data[mid]) {              mid คือ ตําแหน่งตรงกลางของชุดข้ อมูล
      7         right = mid - 1;
      8       } else {
      9         left = mid + 1;     คําตอบจากการสืบค้ นคือค่าของ mid
      10      }
      11    }


โจทย์ ข้อที่ 11 [ระดับง่ าย] จงเขียนลําดับการทํางานและนับจํานวนรอบจากการสืบค้ นข้ อมลแบบทวิภาค
                                                                                           ู
ของข้ อมลที่เก็บอย่ ูในอาเรย์ x ต่ อไปนี ้ เพื่อค้ นหาค่ าว่ า 14 อย่ ู ณ ตําแหน่ งใดในอาเรย์ ชุดนี ้ และให้
         ู
เปรียบเทียบคําตอบที่ได้ จากการสืบค้ นนี ้ กับการสืบค้ นแบบลําดับ (10 คะแนน)
int x[] = {30, 45, 23, 2, 19, 14, 5, 99, 9};
   30          45         23         2          19         14          5         99          9




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
88     Computer Programming using Java                                             07 - One Dimensional Arrays


     โจทย์ ข้อที่ 12 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่ออ่ านแฟมข้ อมลวันเกิดที่ช่ ือ
                                                                         ู            ้     ู
     birthdate.txt ซึ่งเก็บข้ อมลในรปแบบ dd-mm-yyyy เช่ น 13-06-1987 เป็ นต้ น โดยมีข้อมลวันเกิด
                                      ู   ู                                                     ู
     ของคนทังหมด 200 คน จงทําการจัดเรี ยงเดือนที่มีคนเกิดมากที่สุดจนถึงเดือนที่มีคนเกิดน้ อยที่สุด แล้ ว
              ้
     แสดงผลลัพธ์ ท่ เป็ นชื่อเดือนทัง 12 เดือนที่ถูกจัดเรียงแล้ วขึนบนจอภาพตามลําดับ (10 คะแนน)
                    ี               ้                              ้
                  birthdate.txt                              ตัวอย่ างการแสดงผลบนจอภาพ
      13-02-2000                                       September [25 people]
      01-10-1989                                       March [22 people]
      31-01-1999                                       January [21 people]
      21-12-1995                                       May [19 people]
      17-07-1994                                       June [19 people]
      ...                                              ...


     import java.util.Scanner;
     import java.io.*;
     public class SortMonthByBirthDate {
       public static void main(String[] args) throws IOException {




       } //End of main
     } //End of class

     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                        Computer Programming using Java              89
โจทย์ ข้อที่ 13 [ระดับเทพ] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อใช้ สําหรั บประมวลผลคะแนนราย
                                                                ู
วิชา “How To Be Noob” โดยโปรแกรมจะเริ่มอ่ านเลขประจําตัวนิสิตจากแฟมข้ อมล student.txt แล้ ว
                                                                           ้    ู
ทําการสร้ างคะแนนของนิสิตแต่ ละคนขึนมาโดยการสุ่ม ซึ่งประกอบไปด้ วย 5 ส่ วนได้ แก่ คะแนนสอบ
                                        ้
ย่ อย (5%) คะแนนการบ้ าน (10%) คะแนนปฏิบัติการ (10%) คะแนนสอบกลางภาค (30%) และคะแนน
สอบปลายภาค (45%) แล้ วนํากลับไปบันทึกไว้ ในแฟมข้ อมล student.txt อีกครั ง จากนั นให้ อ่านค่ า
                                                      ้      ู                      ้  ้
คะแนนทัง 5 ส่ วนของนิสิตแต่ ละคนจากแฟมข้ อมลเดิมเพื่อนํามาคํานวณหาค่ าคะแนนรวม (100%)
           ้                                  ้         ู
พร้ อมทังตัดเกรดรายวิชานัน แล้ วนําผลลัพธ์ ท่ ีได้ ไปบันทึกไว้ ในแฟมข้ อมล totalscore.txt พร้ อมทัง
         ้                  ้                                      ้     ู                        ้
บันทึกข้ อมลสรุ ปต่ างๆ ไว้ ท้ายแฟ มข้ อมลนั น ด้ วย โดยให้ เ ขียนโปรแกรมตามขัน ตอนต่ างๆ ที่โจทย์
               ู                   ้      ู ้                                     ้
กําหนดไว้ ดงรายละเอียดต่ อไปนี ้ (85 คะแนน)
             ั
       student.txt    ก่ อนการประมวลผล                         student.txt     หลังการประมวลผล
 5131000121                                               5131000121       3    7      3    20        26
 5331000221                                               5331000221       4    6      9    24        40
 5231000321                                               5231000321       0    1      8    25        27
 5031000421                                               5031000421       0    3      10   15        0
 4931000521                                               4931000521       2    0      7    28        25
 4931000621                                               4931000621       4    6      7    3         19
 5231000721                                               5231000721       2    10     3    27        45
 ...                                                      ...


     totalscore.txt      หลังการประมวลผล                        totalscore.txt       ท้ ายแฟมข้ อมล
                                                                                            ้     ู
 5131000121         59      D                             ...
 5331000221         83      A                             Max Score: 87
 5231000321         61      C                             Max Score Freq: 1
 5031000421         28      F                             Max Score Year: 2
 4931000521         62      C                             Min Score: 14
 4931000621         39      F                             Min Score Freq: 1
 5231000721         87      A                             Min Score Year: 4
 5031000821         63      C                             Avg Score: 49.72
 5131000921         44      F                             Max Freq: 5
 ...                                                      List Max Freq Score: 33 60


import java.io.*;
import java.util.Scanner;
public class ScoreCalculator {
  public static void main(String[] args) throws IOException {
      //สร้ างตัวอ่ านชื่อ in1 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt สําหรับนับจํานวนนิสิตทังหมดที่
                                                ้     ู                                    ้
      ปรากฎในแฟมนัน แล้ วเก็บผลลัพธ์ ไว้ ในตัวแปร count (5 คะแนน)
                     ้ ้




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
90     Computer Programming using Java                                             07 - One Dimensional Arrays


           //สร้ างตัวอ่ านชื่อ in2 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt อีกครั ง และสร้ างอาเรย์ ช่ ือ id แล้ ว
                                                     ้     ู                    ้
           ทําการอ่ านค่ าเลขประจําตัวนิสิตแต่ ละคนเก็บไว้ ในอาเรย์ id ทีละช่ อง (5 คะแนน)




           //สร้ างตัวเขียนชื่อ out1 เพื่อเขียนแฟมข้ อมล student.txt โดยในแต่ ละบรรทัดจะประกอบไป
                                                 ้     ู
           ด้ วยเลขประจําตัวนิสิต ตามด้ วยข้ อมลคะแนนทัง 5 ส่ วนของของนิสิตที่ได้ จากการสุ่มตัวเลขจํา-
                                                   ู      ้
           นวนเต็มตามขอบเขตดังต่ อไปนี ้ คะแนนสอบย่ อย (สุ่ มตัวเลข 0-5) คะแนนการบ้ าน (สุ่ มตัวเลข 0-
           10) คะแนนปฏิบัตการ (สุ่ มตัวเลข 0-10) คะแนนสอบกลางภาค (สุ่ มตัวเลข 0-30) และคะแนนสอบ
                                ิ
           ปลายภาค (สุ่ มตัวเลข 0-45) (10 คะแนน)




           //สร้ างตัวอ่ านชื่อ in3 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt อีกครั ง และสร้ างอาเรย์ ช่ ือ sc แล้ ว
                                                     ้     ู                    ้
           ทําการคํานวณคะแนนรวมของนิสิตแต่ ละคนเก็บไว้ ในอาเรย์ sc ทีละช่ อง (10 คะแนน)




     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้
One Dimensional Arrays - 07                                        Computer Programming using Java              91
      //สร้ างตัวเขียนชื่อ out2 เพื่อเขียนแฟมข้ อมล totalscore.txt โดยในแต่ ละบรรทัดจะประกอบ
                                            ้     ู
      ไปด้ วยเลขประจําตัวนิสิต คะแนนรวม และเกรดของนิสิตแต่ ละคน โดยเกรดมี 5 ระดับได้ แก่ A
      (ช่ วงคะแนน 80-100) B (ช่ วงคะแนน 70-79) C (ช่ วงคะแนน 60-69) D (ช่ วงคะแนน 50-59) และ
      F (ช่ วงคะแนน 0-49) (10 คะแนน)




      //หาคะแนนรวมของนิสิตที่ได้ คะแนนสงสุด (Max Score) และตํ่าสุด (Min Score)
                                               ู
      //หาจํานวนนิสิตที่ได้ คะแนนสงสุด (Max Score Freq) และตํ่าสุด (Min Score Freq) มีอย่ างละกี่คน
                                       ู
      //หาว่ านิสิตผ้ ูท่ ได้ คะแนนสงสุดและตํ่าสุดเป็ นนิสิตชันปี ใด (ถ้ ามีหลายชันปี ให้ แสดงชันปี ใดก็ได้ )
                          ี         ู                         ้                   ้             ้
      //หาค่ าเฉลี่ยของคะแนนรวมของนิสิตทังหมด (Average Score)
                                                 ้
      //หาความถี่ สูงสุด (Max Freq) ของคะแนน
      //หาว่ ามีคะแนนใดบ้ างที่มีนิสิตได้ กันมากที่สุด (List Max Freq Score)                       (15 คะแนน)




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
92     Computer Programming using Java                                             07 - One Dimensional Arrays


           //แสดงผลลัพธ์ ท่ ได้ จากการประมวลผลทังหมดจากขันตอนก่ อนหน้ านี ้ ต่ อท้ ายแฟมข้ อมล
                            ี                   ้        ้                             ้     ู
           totalscore.txt (10 คะแนน)




           //คําสั่งในการปิ ดแฟมข้ อมล (5 คะแนน)
                               ้     ู




       } //End of main
     } //End of class




     © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                                 ้

Mais conteúdo relacionado

Mais procurados

สรุปเข้ม#7 ภาษาไทย
สรุปเข้ม#7 ภาษาไทยสรุปเข้ม#7 ภาษาไทย
สรุปเข้ม#7 ภาษาไทยPasit Suwanichkul
 
การสืบพันธุ์ของพืช
การสืบพันธุ์ของพืชการสืบพันธุ์ของพืช
การสืบพันธุ์ของพืชchiralak
 
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excel
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excelเอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excel
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน ExcelLerdrit Dangrathok
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 
2 4โครงสร้างผังงานทำซ้ำ
2 4โครงสร้างผังงานทำซ้ำ2 4โครงสร้างผังงานทำซ้ำ
2 4โครงสร้างผังงานทำซ้ำPannathat Champakul
 
เนื้อหาเล่ม 2
เนื้อหาเล่ม 2เนื้อหาเล่ม 2
เนื้อหาเล่ม 2Aon Narinchoti
 
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์Phattarawan Wai
 
เรื่อง ทบทวนการบวก ลบ คูณ และหารเศษส่วน
เรื่อง  ทบทวนการบวก ลบ คูณ และหารเศษส่วนเรื่อง  ทบทวนการบวก ลบ คูณ และหารเศษส่วน
เรื่อง ทบทวนการบวก ลบ คูณ และหารเศษส่วนkanjana2536
 
ตัวอย่างการสร้างข้อสอบ
ตัวอย่างการสร้างข้อสอบตัวอย่างการสร้างข้อสอบ
ตัวอย่างการสร้างข้อสอบwanchalerm sotawong
 
โรคทางพันธุกรรม
โรคทางพันธุกรรมโรคทางพันธุกรรม
โรคทางพันธุกรรมJiraporn
 
มิวเทชัน (Mutation)
มิวเทชัน (Mutation)มิวเทชัน (Mutation)
มิวเทชัน (Mutation)Wan Ngamwongwan
 

Mais procurados (20)

แกมจิ๊กซอกล้องจุลทรรศน์
แกมจิ๊กซอกล้องจุลทรรศน์แกมจิ๊กซอกล้องจุลทรรศน์
แกมจิ๊กซอกล้องจุลทรรศน์
 
สรุปเข้ม#7 ภาษาไทย
สรุปเข้ม#7 ภาษาไทยสรุปเข้ม#7 ภาษาไทย
สรุปเข้ม#7 ภาษาไทย
 
การสืบพันธุ์ของพืช
การสืบพันธุ์ของพืชการสืบพันธุ์ของพืช
การสืบพันธุ์ของพืช
 
Evolution Plan : การคัดเลือกตามธรรมชาติ
Evolution Plan : การคัดเลือกตามธรรมชาติEvolution Plan : การคัดเลือกตามธรรมชาติ
Evolution Plan : การคัดเลือกตามธรรมชาติ
 
ความหลากหลายทางระบบนิเวศ
ความหลากหลายทางระบบนิเวศความหลากหลายทางระบบนิเวศ
ความหลากหลายทางระบบนิเวศ
 
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excel
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excelเอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excel
เอกสารประกอบการเรียนวิชา การใช้โปรแกรมคำนวน Excel
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 
2 4โครงสร้างผังงานทำซ้ำ
2 4โครงสร้างผังงานทำซ้ำ2 4โครงสร้างผังงานทำซ้ำ
2 4โครงสร้างผังงานทำซ้ำ
 
เนื้อหาเล่ม 2
เนื้อหาเล่ม 2เนื้อหาเล่ม 2
เนื้อหาเล่ม 2
 
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์
แบบทดสอบย่อย เรื่องกล้องจุลทรรศน์
 
เรื่อง ทบทวนการบวก ลบ คูณ และหารเศษส่วน
เรื่อง  ทบทวนการบวก ลบ คูณ และหารเศษส่วนเรื่อง  ทบทวนการบวก ลบ คูณ และหารเศษส่วน
เรื่อง ทบทวนการบวก ลบ คูณ และหารเศษส่วน
 
อาณาจักรสิ่งมีชีวิต
อาณาจักรสิ่งมีชีวิต อาณาจักรสิ่งมีชีวิต
อาณาจักรสิ่งมีชีวิต
 
Pigment
PigmentPigment
Pigment
 
ตัวอย่างการสร้างข้อสอบ
ตัวอย่างการสร้างข้อสอบตัวอย่างการสร้างข้อสอบ
ตัวอย่างการสร้างข้อสอบ
 
โรคทางพันธุกรรม
โรคทางพันธุกรรมโรคทางพันธุกรรม
โรคทางพันธุกรรม
 
ความคล้าย
ความคล้ายความคล้าย
ความคล้าย
 
ศัพท์ที่เกี่ยวข้องกับเทคโนโลยี
ศัพท์ที่เกี่ยวข้องกับเทคโนโลยีศัพท์ที่เกี่ยวข้องกับเทคโนโลยี
ศัพท์ที่เกี่ยวข้องกับเทคโนโลยี
 
ภาษาอังกฤษ ม.ต้น
ภาษาอังกฤษ ม.ต้น ภาษาอังกฤษ ม.ต้น
ภาษาอังกฤษ ม.ต้น
 
มิวเทชัน (Mutation)
มิวเทชัน (Mutation)มิวเทชัน (Mutation)
มิวเทชัน (Mutation)
 
ชุดการสอนที่ 4 ตับอ่อน (อาบ)
ชุดการสอนที่ 4 ตับอ่อน (อาบ)ชุดการสอนที่ 4 ตับอ่อน (อาบ)
ชุดการสอนที่ 4 ตับอ่อน (อาบ)
 

Destaque

Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsJava-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsWongyos Keardsri
 
Java-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsJava-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsWongyos Keardsri
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysWongyos Keardsri
 
Java-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsJava-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsWongyos Keardsri
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File OperationsWongyos Keardsri
 
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingJava-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingWongyos Keardsri
 
Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 RecursionsWongyos Keardsri
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Wongyos Keardsri
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Wongyos Keardsri
 
Java-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsJava-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsWongyos Keardsri
 
ภาษา C# เบื้องต้น
ภาษา C# เบื้องต้นภาษา C# เบื้องต้น
ภาษา C# เบื้องต้นictyangtalad
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมkorn27122540
 
How to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramHow to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramWongyos Keardsri
 

Destaque (15)

Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsJava-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and Applications
 
Java-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsJava-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and Objects
 
Java-Chapter 08 Methods
Java-Chapter 08 MethodsJava-Chapter 08 Methods
Java-Chapter 08 Methods
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional Arrays
 
Java-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsJava-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration Statements
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File Operations
 
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingJava-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java Programming
 
Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 Recursions
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)
 
Java-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsJava-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and Objects
 
ภาษา C# เบื้องต้น
ภาษา C# เบื้องต้นภาษา C# เบื้องต้น
ภาษา C# เบื้องต้น
 
IP address anonymization
IP address anonymizationIP address anonymization
IP address anonymization
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรม
 
How to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramHow to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master Program
 

Semelhante a Java-Chapter 07 One Dimensional Arrays

บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1Little Tukta Lita
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงNaphamas
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นThanachart Numnonda
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arraysa-num Sara
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระAreeya Onnom
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระAreeya Onnom
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
อาเรย์ (Array)
อาเรย์ (Array)อาเรย์ (Array)
อาเรย์ (Array)tumetr
 
ตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTAreeya Onnom
 
โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์waradakhantee
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 

Semelhante a Java-Chapter 07 One Dimensional Arrays (20)

บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
08 arrays
08 arrays08 arrays
08 arrays
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arrays
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
Lesson6
Lesson6Lesson6
Lesson6
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
4
44
4
 
Array1
Array1Array1
Array1
 
อาเรย์ (Array)
อาเรย์ (Array)อาเรย์ (Array)
อาเรย์ (Array)
 
ตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPTตัวแปรชุดและตัวแปรอักขระ PPT
ตัวแปรชุดและตัวแปรอักขระ PPT
 
โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 
Array
ArrayArray
Array
 
งาน
งานงาน
งาน
 

Mais de Wongyos Keardsri

The next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsThe next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsWongyos Keardsri
 
SysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingSysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingWongyos Keardsri
 
SysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemSysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemWongyos Keardsri
 
SysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageSysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageWongyos Keardsri
 
Discrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIDiscrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIWongyos Keardsri
 
Discrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIDiscrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIWongyos Keardsri
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IWongyos Keardsri
 
Discrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsDiscrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsWongyos Keardsri
 
Discrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsDiscrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsWongyos Keardsri
 
Discrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityDiscrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityWongyos Keardsri
 
Discrete-Chapter 06 Counting
Discrete-Chapter 06 CountingDiscrete-Chapter 06 Counting
Discrete-Chapter 06 CountingWongyos Keardsri
 
Discrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsDiscrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsWongyos Keardsri
 
Discrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIDiscrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIWongyos Keardsri
 
Discrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IDiscrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IWongyos Keardsri
 
Discrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesDiscrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesWongyos Keardsri
 
Discrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesDiscrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesWongyos Keardsri
 
Discrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationDiscrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationWongyos Keardsri
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowJava-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowWongyos Keardsri
 

Mais de Wongyos Keardsri (20)

The next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsThe next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applications
 
SysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingSysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script Programming
 
SysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemSysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating System
 
SysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageSysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming Language
 
Discrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIDiscrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part III
 
Discrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIDiscrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part II
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part I
 
Discrete-Chapter 10 Trees
Discrete-Chapter 10 TreesDiscrete-Chapter 10 Trees
Discrete-Chapter 10 Trees
 
Discrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsDiscrete-Chapter 09 Algorithms
Discrete-Chapter 09 Algorithms
 
Discrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsDiscrete-Chapter 08 Relations
Discrete-Chapter 08 Relations
 
Discrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityDiscrete-Chapter 07 Probability
Discrete-Chapter 07 Probability
 
Discrete-Chapter 06 Counting
Discrete-Chapter 06 CountingDiscrete-Chapter 06 Counting
Discrete-Chapter 06 Counting
 
Discrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsDiscrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and Proofs
 
Discrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIDiscrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part II
 
Discrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IDiscrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part I
 
Discrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesDiscrete-Chapter 03 Matrices
Discrete-Chapter 03 Matrices
 
Discrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesDiscrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and Sequences
 
Discrete-Chapter 01 Sets
Discrete-Chapter 01 SetsDiscrete-Chapter 01 Sets
Discrete-Chapter 01 Sets
 
Discrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationDiscrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling Computation
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowJava-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindow
 

Java-Chapter 07 One Dimensional Arrays

  • 1. One Dimensional Arrays - 07 Computer Programming using Java 77 CHAPTER อาเรย์หนึ่งมิติ 07 (One Dimensional Arrays) 1. ความร้ ูเบืองต้ นเกี่ยวกับอาเรย์ (Introduction to Arrays) ้ 1. นิยามของอาเรย์ 1) อาเรย์ (Arrays) คือ โครงสร้ างข้ อมูลประเภทหนึ่งที่ใช้ เก็บรายการของข้ อมูลประเภทเดียวกัน โดยเก็บ ข้ อมูลทังหมดเรี ยงต่อกันไปในหน่วยความจํา เสมือนนําข้ อมูลเก็บไว้ ใน "ช่ อง" ที่วางเรี ยงกัน เช่น ้ 6 1 7 9 'C' ไม่สนใจว่าช่องของอาเรย์จะวางเรี ยงกันในแนวตังหรื อแนวนอน ซึง ้ ่ 'U' จะเรี ยกว่าอาเรย์ทงหมด โดยแต่ละช่องจะเก็บข้ อมูลได้ เพียง 1 ค่า ั้ 2) ตําแหน่ งของอาเรย์ อาเรย์แต่ละชุดจะมีชื่อของอาเรย์และหมายเลขช่องที่ระบุตําแหน่ง (Index) ของข้ อ- มูลในอาเรย์แต่ละตัว ซึงจะเริ่มต้ นที่ตําแหน่งที่ 0 (Zero Index) เสมอ (เหมือนกับสตริ ง) ่ 0 1 2 3 6 1 7 9 ตําแหน่ง (Index) เริ่มที่ 0 แต่ลําดับ (Order) เริ่มที่ 1 3) ขนาดหรื อความยาวของอาเรย์ คือ จํานวนสมาชิกหรื อจํานวนข้ อมูลที่เก็บอยูในอาเรย์ชดนัน ่ ุ ้ 0 1 2 3 6 1 7 9 อาเรย์ยาว 4 (มีสมาชิก 4 ตัว) 4) มิตของอาเรย์ สามารถมีได้ ไม่จํากัด เช่นอาเรย์หนึ่งมิติ สองมิติ สามมิติ หรื อ n มิติ แต่โดยทัวไปแล้ วเรา ิ ่ นิยมใช้ อาเรย์หนึงมิตและอาเรย์สองมิติ ซึงในบทนี ้จะนําเสนออาเรย์หนึงมิติ ่ ิ ่ ่ 6 1 2 1 หนึงมิติ ่ 7 0 สามมิติ 9 4 สองมิติ 5 3 2. การประกาศและสร้ างอาเรย์ หนึ่งมิติ 1. การประกาศและสร้ างอาเรย์ หนึ่งมิตโดยใช้ Initialized List ิ การประกาศและสร้ างอาเรย์หนึ่งมิติโดยใช้ Initialized List เป็ นการสร้ างอาเรย์แบบง่าย ซึงจะประกาศใช้ ได้ ก็ ่ ต่อเมื่อทราบค่าทุกค่าที่จะเก็บลงไปในอาเรย์แล้ ว โดยมีรูปแบบคําสังดังนี ้ หลังชื่ออาเรย์ต้องมีสญลักษณ์ [] ่ ั <ประเภทข้ อมูล> <ชื่ออาเรย์>[] = { สมาชิก ,..., สมาชิก }; สมาชิกแต่ละตัวคันด้ วย Comma ่ เช่น int a[] = {34, 56, 52, 12, 90, 0, 75, 23, 45, 8}; ซึงจะได้ เป็ นโครงสร้ างดังนี ้ ่ 0 1 2 3 4 5 6 7 8 9 34 56 52 12 90 0 75 23 45 8 มีสมาชิก 10 ตัว แต่ตําแหน่งสูงสุดคือ 9 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 2. 78 Computer Programming using Java 07 - One Dimensional Arrays ค่าสมาชิกแต่ละตัวของอาเรย์สามารถอ้ างอิงหรื อเรี ยกชื่อได้ โดยใช้ คําสัง <ชื่ออาเรย์ >[<ตําแหน่ ง>] เช่น ่ 0 1 2 3 4 5 6 7 8 9 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] โจทย์ ข้อที่ 1 [ระดับง่ าย] จงหาผลลัพธ์ จากส่ วนของโปรแกรมต่ อไปนี ้ โดยกําหนดให้ โปรแกรมสามารถ ทํางานจนจบได้ แม้ มี Error พร้ อมทังแสดงผลลัพธ์ สุดท้ ายของสมาชิกในอาเรย์ แต่ ละช่ อง (8 คะแนน) ้ 1 int i = 3; 2 int a[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 }; 3 System.out.println(a[0] + a[6]); 4 System.out.println(a[1] * --a[4]); 5 System.out.println(a[9]++); 6 System.out.println(a[10] + a[4]); 7 System.out.println(a[1]++ + a[0]); 8 System.out.println(a[5 + 3]); 9 System.out.println(--a[2*i] + a[1]++); 10 System.out.println(a[1] + a[4] + a[9]); 0 1 2 3 4 5 6 7 8 9 ค่าของสมาชิกแต่ละช่องคือ 2. การประกาศและสร้ างอาเรย์ หนึ่งมิตโดยการ new ิ การประกาศและการสร้ างอาเรย์โดยการ new นี ้จะเป็ นวิธีแบบทัวไปที่ใช้ ในการเขียนโปรแกรมภาษาจาวา ซึงมี ่ ่ ขันตอนดังต่อไปนี ้ ้ 1) การประกาศตัวแปรอาเรย์หนึงมิติ ่ <ประเภทข้ อมูล> <ชื่ออาเรย์>[]; หลังชื่ออาเรย์ต้องมีเครื่ องหมาย [] เช่น a int a[]; 2) การสร้ างอาเรย์หนึงมิติ ่ หลังชื่ออาเรย์ไม่ต้องมีเครื่ องหมาย [] <ชื่ออาเรย์> = new <ประเภทข้ อมูล>[<ขนาด>]; ระบุขนาดหรื อจํานวนช่องของอาเรย์ (ไม่ใช่ตําแหน่ง) เช่น a = new int[3]; a 0 1 2 0 0 0 3) อาเรย์หนึงมิตที่ได้ หลังจากการประกาศและการสร้ าง ่ ิ มีคาเริ่มต้ นของทุกช่องเป็ น 0 (ประเภท int) ่ a[0] a[1] a[2] 4) การประกาศและการสร้ างอาเรย์หนึงมิตโดยรวมขันตอนที่ 1 และ 2 เข้ าด้ วยกัน (มี 2 วิธีให้ เลือกใช้ ) ่ ิ ้ <ประเภทข้ อมูล> <ชื่ออาเรย์>[] = new <ประเภทข้ อมูล>[<ขนาด>]; เครื่ องหมาย [] จะอยูหน้ าหรื อหลัง ่ <ประเภทข้ อมูล> []<ชื่ออาเรย์> = new <ประเภทข้ อมูล>[<ขนาด>]; ชื่ออาเรย์ก็ได้ เช่น int a[] = new int[3]; © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 3. One Dimensional Arrays - 07 Computer Programming using Java 79 5) ข้ อสังเกตในการประกาศและสร้ างอาเรย์หนึงมิติ ่ ขนาดของอาเรย์ถกระบุตอนสร้ างอาเรย์ ถ้ าต้ องการให้ อาเรย์มีกี่ช่องก็ให้ ระบุจํานวนช่องลงไป ซึงส่วนนี ้ ู ่ ไม่ใช่ตาแหน่งของอาเรย์ (อย่าสับสน) ลําดับของอาเรย์เริ่มนับที่ 1 แต่ตําแหน่งของอาเรย์เริ่มนับที่ 0 ํ ขนาดของอาเรย์เป็ นค่าของนิพจน์ได้ เช่น int data[] = new int[3 * n + 1]; เป็ นต้ น อาเรย์ที่สร้ างขึ ้น ไม่สามารถเพิ่มหรื อลดขนาดได้ (สร้ างแล้ วต้ องใช้ อย่างเดิมตลอดไป) ระบบจะตังค่าเริ่ มต้ นของข้ อมูลให้ กบอาเรย์ทกช่องโดยอัตโนมัตเิ มื่อเริ่มสร้ างอาเรย์ตามชนิดของอาเรย์ ้ ั ุ เช่น double a[] = new double[5]; จะได้ อาเรย์ 5 ช่องโดยมีคาเริ่มต้ นของทุกช่องเป็ น 0.0 ่ 3. การหาขนาดและความยาวของอาเรย์ หนึ่งมิติ การหาขนาดของอาเรย์จะใช้ คําสัง .length โดยระบุเข้ าไปหลังชื่ออาเรย์โดยไม่ต้องใส่วงเล็บ ดังรูปแบบต่อไปนี ้ ่ <ชื่ออาเรย์>.length อย่าจําสับสนกับเมท็อดที่ใช้ หาความยาวของสตริ งซึงใช้ .length() เช่นเดียวกัน ดังตัวอย่าง ่ 1 int a[] = new int[5]; หลัง length ไม่ใส่วงเล็บ 2 System.out.println(a.length); 3 String s = "JAVA!"; 4 System.out.println(s.length()); หลัง length ใส่วงเล็บ 5 int b[] = new int[12]; 6 System.out.println(b.length()); Error โจทย์ ข้อที่ 2 [ระดับง่ าย] จงเขียนคําสั่งภาษาจาวาเพื่อประกาศและสร้ างอาเรย์ ต่อไปนี ้ (12 คะแนน) 1) สร้ างอาเรย์ ช่ ือ num เก็บข้ อมลตัวเลขจํานวนเต็มที่ยาว 15 หลักขึนไป จํานวน 200 ค่ า (2 คะแนน) ู ้ 2) สร้ างอาเรย์ ช่ ือ dice เก็บหมายเลขหน้ าของลกเต๋ า (2 คะแนน) ู 3) สร้ างอาเรย์ ช่ ือ avgGrade เก็บผลการเรี ยนเฉลี่ยของนิสิตจํานวน 451 คน (2 คะแนน) 4) สร้ างอาเรย์ ช่ ือ grade เก็บผลการเรี ยนรายวิชา 2110101 ของนิสิตจํานวน 369 คน (2 คะแนน) 5) สร้ างอาเรย์ ช่ ือ x เก็บค่ าความจริง ซึ่งมีตาแหน่ งสงสุดของช่ องสมาชิกคือตําแหน่ งที่ 10 (2 คะแนน) ํ ู 6) สร้ างอาเรย์ ช่ ือ merge เก็บข้ อมลที่ได้ จากการนําอาเรย์ ในข้ อที่ 1 มาต่ อกับอาเรย์ ในข้ อที่ 2 (2 คะแนน) ู © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 4. 80 Computer Programming using Java 07 - One Dimensional Arrays 4. การอ้ างอิงค่ า การกําหนดค่ า และการแสดงผลของอาเรย์ หนึ่งมิติ 1) การอ้ างอิงค่ าจากอาเรย์ มีรูปแบบคําสังดังนี ้ ่ <ประเภทข้ อมูล> <ชื่อตัวแปร> = <ชื่ออาเรย์>[<ตําแหน่ง>]; เช่น int n = num[0]; (ให้ ตวแปร n ประเภทจํานวนเต็ม เก็บค่าจากอาเรย์ num ตําแหน่งที่ 0) ั 2) การกําหนดค่ าลงไปในอาเรย์ มีรูปแบบคําสังดังนี ้ ่ <ชื่ออาเรย์>[<ตําแหน่ง>] = <ค่าข้ อมูล>; เช่น num[0] = 13; (ให้ อาเรย์ num ตําแหน่งที่ 0 มีคาเท่ากับ 13) ่ 3) การแสดงผลของอาเรย์ จะใช้ คําสัง for ในการเข้ าไปยังสมาชิกแต่ละตัวในอาเรย์ตงแต่ตวแรก (ตําแหน่งที่ ่ ั้ ั 0) จนถึงตัวสุดท้ าย (ตําแหน่งที่ length - 1) ดังตัวอย่างต่อไปนี ้ ต้ องเขียน a.length ไม่ควรเขียนเป็ นตัว 1 int a[] = new int[5]; เลข และต้ องเป็ นเครื่ องหมาย < ไม่ใช่ <= 2 for(int i = 0; i < a.length; i++) { 3 a[i] = 100; 4 } i ต้ องเริ่ มที่ 0 ไม่ใช่ 1 (วนตําแหน่งของอาเรย์ ไม่ใช่วนลําดับ) โจทย์ ข้อที่ 3 [ระดับง่ าย] จงเขียนคําสั่งภาษาจาวาเพื่ออ้ างอิงและกําหนดค่ าจากอาเรย์ ต่อไปนี ้ โดยสมมุตให้ ิ อาเรย์ ในทุกข้ อมีการประกาศและสร้ างเรี ยบร้ อยแล้ วพร้ อมทังมีค่าข้ อมลครบทุกช่ อง (12 คะแนน) ้ ู 1) ประกาศตัวแปร x เพื่อเก็บข้ อมลประเภทจํานวนเต็มที่ได้ จากอาเรย์ num ตัวที่ 50 (2 คะแนน) ู 2) ประกาศตัวแปร y เพื่อเก็บข้ อมลประเภทจํานวนเต็มที่ได้ จากอาเรย์ num ตําแหน่ งที่ 50 (2 คะแนน) ู 3) ประกาศตัวแปร c เพื่อเก็บข้ อมลประเภทอักขระที่ได้ จากอาเรย์ code ตําแหน่ งสุดท้ าย (2 คะแนน) ู 4) ให้ ค่าสมาชิกตําแหน่ งที่ 12 ของอาเรย์ bank เก็บข้ อมลประเภทตรรกะจากตัวแปร var1 (2 คะแนน) ู boolean var1 = 5 > 6; 5) ให้ ค่าสมาชิกตัวที่ 1 ของอาเรย์ bank เก็บข้ อมลประเภทจํานวนจริงจากตัวแปร var2 (2 คะแนน) ู double var2 = kb.nextDouble(); 6) ให้ ค่าสมาชิกตัวรองสุดท้ ายของอาเรย์ bank เก็บข้ อมลประเภทอักขระจากตัวแปร var3 (2 คะแนน) ู char var3 = "java".charAt(3); © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 5. One Dimensional Arrays - 07 Computer Programming using Java 81 โจทย์ ข้อที่ 4 [ระดับง่ าย–ปานกลาง] จงเขียนส่ วนของโปรแกรมภาษาจาวาตามคําสั่งต่ อไปนี ้ (55 คะแนน) 1) สร้ างอาเรย์ ช่ ือ n แบบ Initialed List เพื่อเก็บเลขคี่ท่ ีอย่ ูในช่ วง 1 ถึง 20 พร้ อมทังแสดงค่ าของตัวเลข ้ ทุกตัวในอาเรย์ n ขึนบนจอภาพทีละบรรทัด (5 คะแนน) ้ 2) สร้ างอาเรย์ ช่ ือ m ขนาด 1000 ช่ อง พร้ อมทังกําหนดค่ าให้ กับสมาชิกทุกตัวในอาเรย์ m ให้ มีค่าเป็ น ้ ตัวเลขตังแต่ 1-1000 เรี ยงลําดับจากสมาชิกตัวแรกจนถึงสมาชิกตัวสุดท้ ายของอาเรย์ m (5 คะแนน) ้ 3) สร้ างอาเรย์ ช่ ือ a เพื่อเก็บตัวเลขจํานวนจริงใดๆ ที่รับมาจากแปนพิมพ์ จานวน 100 ตัว (5 คะแนน) ้ ํ Scanner kb = new Scanner(System.in); 4) นับจํานวนเลขคี่และค่ ท่ เก็บอย่ ในอาเรย์ x ว่ ามีอย่ างละกี่จานวนแล้ วแสดงผลขึนบนจอภาพ (10 คะแนน) ู ี ู ํ ้ int x[] = { 7, 9, -1, 4, 12, 9, 3, 2, -7, 2, 1, 9, -15, 24, 11, 13 }; © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 6. 82 Computer Programming using Java 07 - One Dimensional Arrays 5) รับตัวเลขจํานวนเต็มจากแปนพิมพ์ เก็บไว้ ในตัวแปร x แล้ วค้ นหาว่ า ค่ าสมาชิกตําแหน่ งแรกในอาเรย์ ้ num ที่มีค่าเท่ า x คือตําแหน่ งใด พร้ อมทังแสดงผลลัพธ์ ขึนบนจอภาพ (10 คะแนน) ้ ้ int num[] = { 3, 2, 1, 10, 2, 8, 3, 2, 1, 1, 8, 5, 10, 11, 7, 6, 10 }; Scanner kb = new Scanner(System.in); ถ้ าค้ นหาไม่ เจอให้ แสดงผลลัพธ์ เป็ นค่ า -1 โจทย์ ข้อที่ 5 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการผสาน (Merge) ข้ อมล ู ู ในอาเรย์ a และอาเรย์ b ซึ่งเป็ นจํานวนเต็มเข้ าเป็ นอาเรย์ เดียวกันในอาเรย์ ช่ ือ ab พร้ อมทังแสดงค่ า ้ สมาชิกของอาเรย์ ab (10 คะแนน) import java.util.Scanner; public class MergeArrays { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int b[] = { 1, 4, 6, 8, 10, 12 }; } //End of main } //End of class โจทย์ ข้อที่ 6 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อรับตัวเลขจํานวนเต็มจากแปนพิมพ์ ู ้ เก็บไว้ ในตัวแปร x แล้ วทําการแบ่ ง (Split) ค่ าสมาชิกในอาเรย์ num ออกเป็ นอาเรย์ ใหม่ โดยถ้ าค่ าสมาชิก มีค่ามากกว่ าหรือเท่ ากับ x ให้ เก็บไว้ ในอาเรย์ upper ไม่ เช่ นนันให้ เก็บไว้ ในอาเรย์ lower (10 คะแนน) ้ import java.util.Scanner; public class SplitArray { public static void main(String[] args) { © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 7. One Dimensional Arrays - 07 Computer Programming using Java 83 int num[] = {95, 1, 6, 34, 5, 9, 123, -2, 57, 82, 12, 79, 45, 34, 1}; } //End of main } //End of class โจทย์ ข้อที่ 7 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการกลับค่ าสมาชิกในอาเรย์ ู (Reverse Array) ที่ช่ ือ num จากหลังมาหน้ า แล้ วเก็บค่ าไว้ ในอาเรย์ ตวเดิม โดยในการเขียนโปรแกรมห้ าม ั ประกาศอาเรย์ ตวใหม่ เพิ่มโดยเด็ดขาด (10 คะแนน) ั import java.util.Scanner; public class ReverseArray { public static void main(String[] args) { int num[] = {95, 1, 6, 34, 5, 9, 123, -2, 57, 82, 12, 79, 45, 34, 1}; } //End of main } //End of class โจทย์ ข้อที่ 8 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อตรวจสอบและแสดงข้ อความว่ า ู อาเรย์ a และอาเรย์ b เท่ ากันหรื อไม่ โดยการเท่ ากันของอาเรย์ คือ ความยาวของอาเรย์ ต้องเท่ ากัน และ สมาชิกทุกตัวตําแหน่ งต่ อตําแหน่ งต้ องเท่ ากัน (10 คะแนน) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 8. 84 Computer Programming using Java 07 - One Dimensional Arrays import java.util.Scanner; public class EqualityOfArrays { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5, 6, 7 }, b[] = { 1, 2, 3, 5, 5, 7, 7 }; } //End of main } //End of class โจทย์ ข้อที่ 9 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อทําการรั บค่ าตัวเลขจํานวนเต็มจาก ู แปนพิมพ์ เก็บไว้ ในตัวแปร key เพื่อค้ นหาว่ าค่ าของตัวแปร key ปรากฏเป็ นลําดับรองสุดท้ ายที่ ตาแหน่ ง ้ ํ ใดในอาเรย์ num โดยถ้ าค้ นเจอให้ แสดงตําแหน่ งนัน แต่ ถ้าไม่ เจอให้ แสดงค่ า -1 (10 คะแนน) ้ import java.util.Scanner; public class LastSecondSearch { public static void main(String[] args) { int num[] = { 3, 2, 1, 10, 2, 8, 3, 2, 1, 1, 8, 5, 10, 11, 7, 6, 10 }; } //End of main } //End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 9. One Dimensional Arrays - 07 Computer Programming using Java 85 3. การประยุกต์ ใช้ อาเรย์ (Applications of Array) 1. การเรียงลําดับแบบเลือก (Selection Sort) (ดูการสาธิตตัวอย่างการจัดเรี ยงในโจทย์ข้อที่ 10) 1 for (int i = data.length - 1; i >= 1; i--) { จํา 2 int maxIndex = 0; 3 for (int j = 0; j <= i; j++) 4 if (data[j] > data[maxIndex]) maxIndex = j; เรี ยงจากน้ อยไปหามาก 5 int temp = data[i]; 6 data[i] = data[maxIndex]; เลือกค่าที่สนใจในแต่ละรอบ ซึงอาจจะเป็ นค่ามาก ่ 7 data[maxIndex] = temp; 8 } ที่สดหรื อค่าน้ อยที่สดในรอบนัน เพื่อจัดเรี ยง ุ ุ ้ คําสัง for i ชันนอก เป็ นการกําหนดช่องหรื อเลือกช่องตําแหน่งที่ i ที่ต้องการจะเรี ยงลําดับ ่ ้ คําสัง for j ชันใน เป็ นการหาค่าสมาชิกที่สงสุดตังแต่ช่องแรกจนถึงช่องตําแหน่งที่ i ที่เลือกไว้ เพื่อจะได้ ่ ้ ู ้ สลับค่าสูงสุดไปไว้ ในช่องตําแหน่งที่ i นัน ้ 2. การเรียงลําดับแบบฟอง (Bubble Sort) (ดูการสาธิตตัวอย่างการจัดเรี ยงในโจทย์ข้อที่ 10) 1 for (int i = data.length - 1; i >= 1; i--) { จํา 2 for (int j = 0; j < i; j++) { 3 if (data[j] > data[j + 1]) { เรี ยงจากน้ อยไปหามาก 4 int temp = data[j]; 5 data[j] = data[j + 1]; 6 data[j + 1] = temp; จับค่ ูและขยับค่าที่สนใจในแต่ละรอบ อาจจะเป็ นค่า 7 } 8 } มากหรื อค่าน้ อยของคูนน เพื่อจัดเรี ยง ่ ั้ 9 } คําสัง for i ชันนอก เป็ นการกําหนดช่องตําแหน่งที่ i ที่ต้องการจะเรี ยงลําดับ ่ ้ คําสัง for j ชันใน เป็ นการเปรี ยบเทียบค่าเป็ นคูๆ เริ่ มตังแต่ช่องแรกจนถึงช่องตําแหน่งที่ i ที่กําหนดไว้ ่ ้ ่ ้ เพื่อจะขยับค่าหรื อดันค่าสมาชิกที่สงสุดไปไว้ ในช่องตําแหน่งที่ i นัน (เหมือนฟองสบูที่ลอยขึ ้นไปเรื่ อยๆ) ู ้ ่ โจทย์ ข้อที่ 10 [ระดับง่ าย] จงแสดงรายละเอียดในแต่ ละรอบของการจัดเรี ยงแบบเลือก (Selection Sort) และรายละเอียดของรอบที่ 1 และรอบที่ 2 ของการจัดเรี ยงแบบฟอง (Bubble Sort) จากชุดข้ อมลในอา- ู เรย์ x ต่ อนีให้ ถกต้ อง โดยให้ จัดเรี ยงข้ อมลจากน้ อยไปมาก (20 คะแนน) ้ ู ู int x[] = {30, 45, 23, 2, 19, 14, 5, 99, 9}; 30 45 23 2 19 14 5 99 9 การจัดเรี ยงแบบเลือก รอบที่ 1 รอบที่ 2 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 10. 86 Computer Programming using Java 07 - One Dimensional Arrays รอบที่ 3 รอบที่ 4 รอบที่ 5 รอบที่ 6 รอบที่ 7 รอบที่ 8 การจัดเรี ยงแบบฟอง รอบที่ 1 รอบที่ 2 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 11. One Dimensional Arrays - 07 Computer Programming using Java 87 3. การสืบค้ นแบบทวิภาค (Binary Search) เป็ นการค้ นข้ อมูลโดยการแบ่งครึ่งข้ อมูลในอาเรย์ แล้ วพิจารณาเพื่อตัดข้ อมูลออกไปครึ่งหนึง (ครึ่งซ้ ายหรื อครึ่ง ่ ขวาของอาเรย์) โดยข้ อมูลต้ องจัดเรี ยงก่อนเสมอ ซึงมีอลกอริทมในการสืบค้ นดังนี ้ (กําหนดให้ อาเรย์ชื่อ data) ่ ั ึ 1 int left = 0, right = data.length - 1, mid = 0; 2 while (left <= right) { 3 mid = (left + right) / 2; left คือ ตําแหน่งทางซ้ ายของชุดข้ อมูล 4 if (key == data[mid]) { 5 break; right คือ ตําแหน่งทางขวาของชุดข้ อมูล 6 } else if (key < data[mid]) { mid คือ ตําแหน่งตรงกลางของชุดข้ อมูล 7 right = mid - 1; 8 } else { 9 left = mid + 1; คําตอบจากการสืบค้ นคือค่าของ mid 10 } 11 } โจทย์ ข้อที่ 11 [ระดับง่ าย] จงเขียนลําดับการทํางานและนับจํานวนรอบจากการสืบค้ นข้ อมลแบบทวิภาค ู ของข้ อมลที่เก็บอย่ ูในอาเรย์ x ต่ อไปนี ้ เพื่อค้ นหาค่ าว่ า 14 อย่ ู ณ ตําแหน่ งใดในอาเรย์ ชุดนี ้ และให้ ู เปรียบเทียบคําตอบที่ได้ จากการสืบค้ นนี ้ กับการสืบค้ นแบบลําดับ (10 คะแนน) int x[] = {30, 45, 23, 2, 19, 14, 5, 99, 9}; 30 45 23 2 19 14 5 99 9 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 12. 88 Computer Programming using Java 07 - One Dimensional Arrays โจทย์ ข้อที่ 12 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่ออ่ านแฟมข้ อมลวันเกิดที่ช่ ือ ู ้ ู birthdate.txt ซึ่งเก็บข้ อมลในรปแบบ dd-mm-yyyy เช่ น 13-06-1987 เป็ นต้ น โดยมีข้อมลวันเกิด ู ู ู ของคนทังหมด 200 คน จงทําการจัดเรี ยงเดือนที่มีคนเกิดมากที่สุดจนถึงเดือนที่มีคนเกิดน้ อยที่สุด แล้ ว ้ แสดงผลลัพธ์ ท่ เป็ นชื่อเดือนทัง 12 เดือนที่ถูกจัดเรียงแล้ วขึนบนจอภาพตามลําดับ (10 คะแนน) ี ้ ้ birthdate.txt ตัวอย่ างการแสดงผลบนจอภาพ 13-02-2000 September [25 people] 01-10-1989 March [22 people] 31-01-1999 January [21 people] 21-12-1995 May [19 people] 17-07-1994 June [19 people] ... ... import java.util.Scanner; import java.io.*; public class SortMonthByBirthDate { public static void main(String[] args) throws IOException { } //End of main } //End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 13. One Dimensional Arrays - 07 Computer Programming using Java 89 โจทย์ ข้อที่ 13 [ระดับเทพ] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อใช้ สําหรั บประมวลผลคะแนนราย ู วิชา “How To Be Noob” โดยโปรแกรมจะเริ่มอ่ านเลขประจําตัวนิสิตจากแฟมข้ อมล student.txt แล้ ว ้ ู ทําการสร้ างคะแนนของนิสิตแต่ ละคนขึนมาโดยการสุ่ม ซึ่งประกอบไปด้ วย 5 ส่ วนได้ แก่ คะแนนสอบ ้ ย่ อย (5%) คะแนนการบ้ าน (10%) คะแนนปฏิบัติการ (10%) คะแนนสอบกลางภาค (30%) และคะแนน สอบปลายภาค (45%) แล้ วนํากลับไปบันทึกไว้ ในแฟมข้ อมล student.txt อีกครั ง จากนั นให้ อ่านค่ า ้ ู ้ ้ คะแนนทัง 5 ส่ วนของนิสิตแต่ ละคนจากแฟมข้ อมลเดิมเพื่อนํามาคํานวณหาค่ าคะแนนรวม (100%) ้ ้ ู พร้ อมทังตัดเกรดรายวิชานัน แล้ วนําผลลัพธ์ ท่ ีได้ ไปบันทึกไว้ ในแฟมข้ อมล totalscore.txt พร้ อมทัง ้ ้ ้ ู ้ บันทึกข้ อมลสรุ ปต่ างๆ ไว้ ท้ายแฟ มข้ อมลนั น ด้ วย โดยให้ เ ขียนโปรแกรมตามขัน ตอนต่ างๆ ที่โจทย์ ู ้ ู ้ ้ กําหนดไว้ ดงรายละเอียดต่ อไปนี ้ (85 คะแนน) ั student.txt ก่ อนการประมวลผล student.txt หลังการประมวลผล 5131000121 5131000121 3 7 3 20 26 5331000221 5331000221 4 6 9 24 40 5231000321 5231000321 0 1 8 25 27 5031000421 5031000421 0 3 10 15 0 4931000521 4931000521 2 0 7 28 25 4931000621 4931000621 4 6 7 3 19 5231000721 5231000721 2 10 3 27 45 ... ... totalscore.txt หลังการประมวลผล totalscore.txt ท้ ายแฟมข้ อมล ้ ู 5131000121 59 D ... 5331000221 83 A Max Score: 87 5231000321 61 C Max Score Freq: 1 5031000421 28 F Max Score Year: 2 4931000521 62 C Min Score: 14 4931000621 39 F Min Score Freq: 1 5231000721 87 A Min Score Year: 4 5031000821 63 C Avg Score: 49.72 5131000921 44 F Max Freq: 5 ... List Max Freq Score: 33 60 import java.io.*; import java.util.Scanner; public class ScoreCalculator { public static void main(String[] args) throws IOException { //สร้ างตัวอ่ านชื่อ in1 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt สําหรับนับจํานวนนิสิตทังหมดที่ ้ ู ้ ปรากฎในแฟมนัน แล้ วเก็บผลลัพธ์ ไว้ ในตัวแปร count (5 คะแนน) ้ ้ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 14. 90 Computer Programming using Java 07 - One Dimensional Arrays //สร้ างตัวอ่ านชื่อ in2 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt อีกครั ง และสร้ างอาเรย์ ช่ ือ id แล้ ว ้ ู ้ ทําการอ่ านค่ าเลขประจําตัวนิสิตแต่ ละคนเก็บไว้ ในอาเรย์ id ทีละช่ อง (5 คะแนน) //สร้ างตัวเขียนชื่อ out1 เพื่อเขียนแฟมข้ อมล student.txt โดยในแต่ ละบรรทัดจะประกอบไป ้ ู ด้ วยเลขประจําตัวนิสิต ตามด้ วยข้ อมลคะแนนทัง 5 ส่ วนของของนิสิตที่ได้ จากการสุ่มตัวเลขจํา- ู ้ นวนเต็มตามขอบเขตดังต่ อไปนี ้ คะแนนสอบย่ อย (สุ่ มตัวเลข 0-5) คะแนนการบ้ าน (สุ่ มตัวเลข 0- 10) คะแนนปฏิบัตการ (สุ่ มตัวเลข 0-10) คะแนนสอบกลางภาค (สุ่ มตัวเลข 0-30) และคะแนนสอบ ิ ปลายภาค (สุ่ มตัวเลข 0-45) (10 คะแนน) //สร้ างตัวอ่ านชื่อ in3 เพื่อเปิ ดอ่ านแฟมข้ อมล student.txt อีกครั ง และสร้ างอาเรย์ ช่ ือ sc แล้ ว ้ ู ้ ทําการคํานวณคะแนนรวมของนิสิตแต่ ละคนเก็บไว้ ในอาเรย์ sc ทีละช่ อง (10 คะแนน) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 15. One Dimensional Arrays - 07 Computer Programming using Java 91 //สร้ างตัวเขียนชื่อ out2 เพื่อเขียนแฟมข้ อมล totalscore.txt โดยในแต่ ละบรรทัดจะประกอบ ้ ู ไปด้ วยเลขประจําตัวนิสิต คะแนนรวม และเกรดของนิสิตแต่ ละคน โดยเกรดมี 5 ระดับได้ แก่ A (ช่ วงคะแนน 80-100) B (ช่ วงคะแนน 70-79) C (ช่ วงคะแนน 60-69) D (ช่ วงคะแนน 50-59) และ F (ช่ วงคะแนน 0-49) (10 คะแนน) //หาคะแนนรวมของนิสิตที่ได้ คะแนนสงสุด (Max Score) และตํ่าสุด (Min Score) ู //หาจํานวนนิสิตที่ได้ คะแนนสงสุด (Max Score Freq) และตํ่าสุด (Min Score Freq) มีอย่ างละกี่คน ู //หาว่ านิสิตผ้ ูท่ ได้ คะแนนสงสุดและตํ่าสุดเป็ นนิสิตชันปี ใด (ถ้ ามีหลายชันปี ให้ แสดงชันปี ใดก็ได้ ) ี ู ้ ้ ้ //หาค่ าเฉลี่ยของคะแนนรวมของนิสิตทังหมด (Average Score) ้ //หาความถี่ สูงสุด (Max Freq) ของคะแนน //หาว่ ามีคะแนนใดบ้ างที่มีนิสิตได้ กันมากที่สุด (List Max Freq Score) (15 คะแนน) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 16. 92 Computer Programming using Java 07 - One Dimensional Arrays //แสดงผลลัพธ์ ท่ ได้ จากการประมวลผลทังหมดจากขันตอนก่ อนหน้ านี ้ ต่ อท้ ายแฟมข้ อมล ี ้ ้ ้ ู totalscore.txt (10 คะแนน) //คําสั่งในการปิ ดแฟมข้ อมล (5 คะแนน) ้ ู } //End of main } //End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้