2-D arrays: working with a grid · 2-D arrays: การทำงานกับตาราง
A grid of values
- A normal array is a single row of values.
- A 2-D array is a grid: it has rows and columns, like a table or a spreadsheet.
- We use it for game boards, images, tables of marks, and more.
A grid of values
- Array ปกติคือแถวเดียวของค่า
- Array 2-D คือตาราง:它有 rows และ columns เหมือนตารางหรือสเปรดชีต
- เรา用它สำหรับเกมบอร์ด, รูปภาพ, ตารางคะแนน และอื่นๆ อีกมากมาย
Making a 2-D array
int[][] g = new int[3][4];makes a grid with 3 rows and 4 columns.- Every cell starts at
0(forint). - You can also fill it directly with values inside
{...}.
Making a 2-D array
int[][] g = new int[3][4];makes a grid with 3 rows and 4 columns.- Every cell starts at
0(forint). - คุณยังสามารถเติมค่าเข้าไปโดยตรงภายใน
{...}ได้
public class Main {
public static void main(String[] args) {
int[][] g = new int[3][4]; // 3 rows, 4 columns, all 0
int[][] table = {
{1, 2, 3},
{4, 5, 6}
}; // 2 rows, 3 columns
System.out.println(table[0][2]); // 3
System.out.println(table[1][0]); // 4
}
}
Reading and writing one cell
- A cell needs two indexes:
g[row][col]. Row first, then column. - Both indexes start at 0.
g[1][2] = 9;stores9in row1, column2.
Reading and writing one cell
- เซลล์ต้องการสอง indexes:
g[row][col]. Row ก่อน แล้วตามด้วย column - Both indexes start at 0.
g[1][2] = 9;stores9in row1, column2.
public class Main {
public static void main(String[] args) {
int[][] g = new int[2][2];
g[0][0] = 5;
g[0][1] = 7;
g[1][0] = 9;
g[1][1] = 11;
System.out.println(g[1][0]); // 9
g[1][0] = g[1][0] + 1;
System.out.println(g[1][0]); // 10
}
}
How big is the grid?
g.length— the number of rows.g[0].length— the number of columns in row0.- In AP CSA every row has the same length, so
g[0].lengthis the column count for the whole grid.
เกริดมีขนาดใหญ่เพียงใด?
g.length— จำนวน แถว.g[0].length— จำนวน คอลัมน์ในแถว0.- ใน AP CSA แต่ละแถวจะมีความยาวเท่ากัน ดังนั้น
g[0].lengthจึงเป็นจำนวนคอลัมน์ของเกริดทั้งชุด
public class Main {
public static void main(String[] args) {
int[][] g = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(g.length); // 2 rows
System.out.println(g[0].length); // 3 columns
}
}
Row-major traversal
- To visit every cell, use a loop inside a loop.
- The outer loop picks the row
r. The inner loop picks the columnc. - This visits row
0fully, then row1, and so on. This order is called row-major.
การ traverses แบบ Row-major
- เพื่อเข้าถึง ทุก เซลล์ ให้ใช้ลูป ภายใน ลูปอีกชั้นหนึ่ง
- ลูปภายนอกเลือก แถว
rลูปภายในเลือก คอลัมน์c - วิธีนี้จะเข้าถึงแถว
0ทั้งหมดก่อน แล้วจึงถึงแถว1และ seterusnya ลำดับนี้เรียกว่า row-major
public class Main {
public static void main(String[] args) {
int[][] g = {
{1, 2, 3},
{4, 5, 6}
};
int total = 0;
for (int r = 0; r < g.length; r++) {
for (int c = 0; c < g[0].length; c++) {
total = total + g[r][c];
}
}
System.out.println(total); // 21
}
}
Common mistakes
- Index a grid
grid[row][col]. grid.lengthis the number of rows;grid[0].lengthis the columns.
ข้อผิดพลาดที่พบบ่อย
- Access เกริด
grid[row][col] grid.lengthคือจำนวน rows;grid[0].lengthคือจำนวน columns
Now you try
- Each task pre-fills the class skeleton — write your code inside main, or complete the method shown.
- Press Run to compile and run, then Check answer.
- Your code compiles and runs on the server, so even the first run is fast.
ลองดูเลย
- Each task เติม skeleton class ไว้ล่วงหน้า — เขียนโค้ดของคุณ ภายใน main, หรือเติมเต็ม method ที่แสดง
- กด Run เพื่อ compile และ run, แล้วกด Check answer
- โค้ดของคุณ compile และ run บน server, ดังนั้นแม้การ run ครั้งแรกก็เร็ว
A 2-D array is a grid · 2-D array คือตาราง
A 2-D array is rows × columns; reach a cell with a[row][col]. · 2-D array คือแถว × คอลัมน์; เข้าถึงเซลล์ด้วย a[row][col].
Complete sumGrid(int[][] g) so it returns the total of every cell in the grid. Use a nested loop with g.length rows and g[0].length columns. · เติม sumGrid(int[][] g) ให้สมบูรณ์เพื่อให้กลับคืน ผลรวม ของทุกเซลล์ในตาราง. ใช้ nested loop กับ g.length แถวและ g[0].length คอลัมน์.
Click Run to see the output here. · คลิก Run เพื่อดูผลลัพธ์ที่นี่
Complete rowSum(int[][] g, int r) so it returns the total of the cells in row r only. Loop over the columns of that one row. · เติม rowSum(int[][] g, int r) ให้สมบูรณ์เพื่อให้กลับคืนผลรวมของเซลล์ใน แถว r เท่านั้น.遍历 คอลัมน์ของแถวนั้นเพียงอย่างเดียว.
Click Run to see the output here. · คลิก Run เพื่อดูผลลัพธ์ที่นี่
In main, the grid is given. Print each row on its own line, with the numbers joined by a single space. For the grid shown, the output is 1 2 3 then 4 5 6. (Build each line in row-major order, then println it.) · ใน main grid ถูกกำหนดให้แล้ว พิมพ์แต่ละ row ในบรรทัดใหม่ โดยเชื่อมตัวเลขด้วยช่องว่างเดียว สำหรับ grid ที่แสดง output คือ 1 2 3 ตามด้วย 4 5 6 (สร้างแต่ละบรรทัดตามลำดับ row-major แล้ว println)
Click Run to see the output here. · คลิก Run เพื่อดูผลลัพธ์ที่นี่