อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง
จัดการอาร์เรย์ 2 มิติที่แต่ละแถวมีความยาวต่างกัน และพิมพ์ตารางให้ตรงแนวด้วยความกว้างแยกตามคอลัมน์ ตัวอย่างจะสร้างเมทริกซ์ตัวอย่างโดยไม่ใช้ Scanner
อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 6 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 6 บทเรียน
แนวคิดอาร์เรย์แถวความยาวไม่เท่ากัน
อาร์เรย์ 2 มิติที่แต่ละแถวมีความยาวไม่เท่ากัน: แต่ละแถวอาจมีความยาวต่างกัน จัดการแต่ละแถวแยกกัน และอย่าสมมติว่าจำนวนคอลัมน์เหมือนกันทุกแถว
สร้างอาร์เรย์แถวความยาวไม่เท่ากัน
สร้างอาร์เรย์ที่มีแถวความยาวไม่เท่ากันโดยจัดสรรแถวที่มีความยาวต่างกัน ข้อความนี้อธิบายว่าทำไม: เราต้องการคอลัมน์เท่าที่แต่ละแถวจำเป็นต้องใช้เท่านั้น
public class Main {
public static void main(String[] args) {
// Create a jagged array with 3 rows of varying lengths
int[][] m = new int[3][];
// Row 0 has 2 columns
m[0] = new int[]{1, 2};
// Row 1 has 3 columns
m[1] = new int[]{3, 4, 5};
// Row 2 has 1 column
m[2] = new int[]{6};
// Print the jagged array
System.out.println("Jagged array contents:");
for (int r = 0; r < m.length; r++) {
for (int c = 0; c < m[r].length; c++) {
System.out.print(m[r][c] + " ");
}
System.out.println(); // new line after each row
}
}
}
วนซ้ำอย่างปลอดภัย
วนซ้ำอย่างปลอดภัยโดยใช้ m[r].length สำหรับแต่ละแถว ความยาวของลูปภายในอาจแตกต่างกันในแต่ละแถว
public class Main {
public static void main(String[] args) {
// Example jagged array
int[][] m = {
{1, 2},
{3, 4, 5},
{6}
};
// Safe nested loops for a jagged matrix
for (int r = 0; r < m.length; r = r + 1) {
// Always use the actual length of the current row
for (int c = 0; c < m[r].length; c = c + 1) {
int value = m[r][c]; // process the value
System.out.print(value + " ");
}
System.out.println(); // new line after each row
}
}
}
ความกว้างคอลัมน์
หากต้องการพิมพ์คอลัมน์ให้จัดแนว ให้คำนวณความกว้างของแต่ละคอลัมน์ที่มีอยู่โดยตรวจสอบทุกแถว
// Determine the maximum number of columns among all rows
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
// For each column, store the maximum string length of values in that column
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}พิมพ์แบบจัดแนว
เติมช่องว่างทางซ้ายของแต่ละค่าจนมีความกว้างเท่ากับคอลัมน์ แล้วพิมพ์แถวนั้นเป็นข้อความเดียว
// Print each row with left-padded columns
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s; // left pad with spaces
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}สาธิตโดยไม่รับข้อมูลนำเข้า
เรียกใช้: การสาธิตนี้สร้างเมทริกซ์ที่มีแถวความยาวไม่เท่ากันในโค้ด คำนวณความกว้างคอลัมน์ และพิมพ์ตารางที่จัดแนวโดยไม่ต้องมีข้อมูลนำเข้า
public class Main {
// Compute per-column widths for a jagged matrix
static int[] colWidths(int[][] m) {
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}
// Ensure at least width 1 for each column
for (int c = 0; c < w.length; c = c + 1) {
if (w[c] < 1) w[c] = 1;
}
return w;
}
// Print the matrix with aligned columns
static void printTable(int[][] m) {
int[] w = colWidths(m);
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s;
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}
}
public static void main(String[] args) {
// Sample jagged matrix (no Scanner; values are hard-coded)
int[][] m = {
{1, 23, 456},
{7, 8},
{90, 12, 3, 4}
};
System.out.println("Aligned table:");
printTable(m);
}
}
ตรวจสอบการวนซ้ำของแถวความยาวไม่เท่ากัน
ตรวจสอบสั้น ๆ: ลูปซ้อนกันแบบใดวนซ้ำผ่านสมาชิกทุกตัวในเมทริกซ์ที่มีแถวความยาวไม่เท่ากันได้อย่างปลอดภัย
ทบทวนและถัดไป
ทบทวน: คุณสร้างอาร์เรย์ที่มีแถวความยาวไม่เท่ากัน วนซ้ำอย่างปลอดภัยโดยใช้ความยาวของแต่ละแถว คำนวณความกว้างคอลัมน์ และพิมพ์ตารางที่จัดแนวโดยไม่ใช้ Scanner
ถัดไป: สำรวจค่าสูงสุดของแถวและคอลัมน์ รวมถึงการสลับแถวกับคอลัมน์ของเมทริกซ์
คำถามที่พบบ่อย
บทเรียน “อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 6 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง”
จัดการอาร์เรย์ 2 มิติที่แต่ละแถวมีความยาวต่างกัน และพิมพ์ตารางให้ตรงแนวด้วยความกว้างแยกตามคอลัมน์ ตัวอย่างจะสร้างเมทริกซ์ตัวอย่างโดยไม่ใช้ Scanner คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 6 บทเรียน
บทเรียน “อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานอาร์เรย์ 2 มิติและการวนซ้ำแบบซ้อนกัน
- อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง
- ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ
- โครงงานขนาดเล็ก 2 มิติ: สมุดบันทึกคะแนน
- ยูทิลิตี 2 มิติในคลาสตัวช่วย (ปรับโครงสร้างโค้ด)
- การทำความสะอาดและตรวจสอบข้อมูล 2 มิติ