August 16, 2007

WEEK7

Array

การใช้งานตัวแปลarrayเหมือนกับมีกล่องที่เอาไว้เก็บค่าต่างๆ
โดยเราสามารถกำหนดได้ว่ากล่องจะใหญ่แค่ไหนและแบ่งเป็นกี่ช่อง

ตัวอย่างการใช้arrayแบบ2x3
เราจะทำการเรียกใช้ช่องต่างๆในarrayได้เหมือนกับคู่อันดับ
โดยเลขข้างหน้าจะเป็นแกนy และด้านหลังเป็นแกนx
abc[0][0] คือช่องมุมซ้ายบนสุด โดยช่องถัดไปก้อคือ abc[0][1] และ abc[0][2]
แล้วเมื่อต้องการเรียกแถวที่สองก็ทำเหมือนกัน แถวที่2ช่องซ้ายสุดคือ abc[1][0]

การใช้ตัวแปรarrayจะใช้เมื่อเราต้องการเก็บข้อมูลหลายๆค่า
โดยเราสามารถนำมาเก็บในตัวแปรตัวเดียวได้ โดยarrayจะเก็บข้อมูลเป็นลำดับไปเรื่อยๆตั้งแต่0

การนำloopเข้ามาใช้ในตัวแปรarrayทำให้เราสามารถใช้งานarrayได้ดีขึ้น
โดยการป้อนข้อมูลหลายๆค่าใส่ลงในตัวแปรarrayเราจะนำการใช้loopมาใช้
ในการเรียกตำแหน่งต่างๆในตัวแปร เพื่อให้ง่ายต่อการเขียนคำสั่งในการรับค่า

ตัวอย่างการใช้loopในการเรียกใช้ข้อมูลในตัวแปรarray
for(i=0; i<3; i++) {
System.out.print(abc[i]);
}
ในการเขียนคำสั่งแบบนี้หมายความว่าprogramจะแสดงค่า
ของตัวแปร abc[i] ตั้งแต่ i=0 ถึง i=2
จะเห็นได้ว่าการใช้loopเข้ามาช่วยจะทำให้เราไม่ต้องเขียนคำสั่งหลายบรรทัด
ถ้าไม่ใช่loop
System.out.print(abc[0]);
System.out.print(abc[1]);
System.out.print(abc[2]);



// studScore.java

import java.util.Scanner;
public class studScore {
    public static void main(String args[]) {

       Scanner obj = new Scanner(System.in);

       int i, j;
       int studNum;

       System.out.print("Student Number= ");
       studNum = obj.nextInt();

       String stud[][] = new String [studNum][4];

       for(i=0; i< studNum; i++) {
          for(j=0; j<1; j++) {
             System.out.print("Name= ");
             stud[i][j] = obj.next();
          }
          for(j=1; j<4; j++) {
             System.out.print("Point"+j+"= ");
             stud[i][j] = obj.next();
         }
      }

       for(i=0; i< studNum; i++) {
          for(j=0; j<1; j++) {
             System.out.print("Name= ");
             System.out.print(stud[i][j]);
          }
          for(j=1; j<4; j++) {
             System.out.print(" Point"+j+"= ");
             System.out.print(stud[i][j]);
          }
          System.out.println();
       }

       double sum = 0;

       for(i=0; i< studNum; i++) {
             for(j=1; j<4; j++) {
                sum += Double.parseDouble(stud[i][j]);
             }
       }

       double max = 0;
       double min = Double.POSITIVE_INFINITY;

       for(i=0; i< studNum; i++) {
          for(j=1; j<4; j++) {
             if (max < (Double.parseDouble(stud[i][j]))) {
                max = Double.parseDouble(stud[i][j]);
             }
             if (min > (Double.parseDouble(stud[i][j]))) {
                min = Double.parseDouble(stud[i][j]);
             }
          }
       }

       System.out.println("Sum= " + sum);
       System.out.println("Max= " + max);
       System.out.println("Min= " + min);

    }
}


DOWNLOAD : studScore.java

ในตอนแรกprogramจะรับค่า จำนวนนักเรียน จากkeyboardเข้ามาใส่ตัวแปร studNum
แล้วก็จะรับค่าต่างๆ:ชื่อนักเรียน, คะแนน1, คะแนน2, คะแนน3
เพื่อบันทึกลงในตัวแปล stud[][] แบบ array โดยความสูงของตารางarrayจะขึ้นอยู่กับจำนวนนักเรียนและความกว้างเท่ากับจำนวนข้อมูล

เมื่อprogramรับค่าทั้งหมดแล้วเก็บไว้ในตัวแปลครบหมดแล้ว
ก็จะคำนวณหา sum, max และ min โดยใช้loopเข้ามาช่วย



// run

Student Number= 1

Name= abc
Point1= 1
Point2= 2
Point3= 3

Name= abc Point1= 1 Point2= 2 Point3= 3

Sum= 6.0
Max= 3.0
Min= 1.0


ใส่จำนวนนักเรียน แล้วใส่คะแนนของแต่ละคน programจะหาแสดงผลข้อมูลที่ป้อนเข้าไป และคำนวณหาผลรวม ค่าต่ำสุด สูงสุด


// boxSum.java

import java.util.Scanner;
public class boxSum {
  public static void main(String args[]) {

    Scanner obj = new Scanner(System.in);

       int i, j;
       int box1[][] = new int [3][3];
       int box2[][] = new int [3][3];
       int box3[][] = new int [3][3];

       for(i=0; i<3; i++) {
          for(j=0; j<3; j++) {
             System.out.print("box1["+i+"]["+j+"]= ");
             box1[i][j] = obj.nextInt();
          }
       }

       for(i=0; i<3; i++) {
          for(j=0; j<3; j++) {
             System.out.print("box2["+i+"]["+j+"]= ");
             box2[i][j] = obj.nextInt();
          }
       }

       for(i=0; i<3; i++) {
          for(j=0; j<3; j++) {
             box3[i][j] = box1[i][j] + box2[i][j];
             System.out.print("box3["+i+"]["+j+"]= " + box3[i][j] + " ");
          }
          System.out.println();
       }

    }
}


DOWNLOAD : boxSum.java


// run

box1[0][0]= 1
box1[0][1]= 2
box1[0][2]= 3
box1[1][0]= 4
box1[1][1]= 5
box1[1][2]= 6
box1[2][0]= 7
box1[2][1]= 8
box1[2][2]= 9

box2[0][0]= 1
box2[0][1]= 2
box2[0][2]= 3
box2[1][0]= 4
box2[1][1]= 5
box2[1][2]= 6
box2[2][0]= 7
box2[2][1]= 8
box2[2][2]= 9

box3[0][0]= 2 box3[0][1]= 4 box3[0][2]= 6
box3[1][0]= 8 box3[1][1]= 10 box3[1][2]= 12
box3[2][0]= 14 box3[2][1]= 16 box3[2][2]= 18


ป้อนข้อมูลเพื่อเก็บค่าในตาราง3x3ทั้ง2ตาราง programจะคำนวณหาผลบวกของแต่ละช่องของตารางแล้วแสดงผลในตารางที่3

No comments: