0Pricing
Java Academy · บทเรียน

อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง

จัดการอาร์เรย์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานอาร์เรย์ 2 มิติและการวนซ้ำแบบซ้อนกัน
  2. อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง
  3. ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ
  4. โครงงานขนาดเล็ก 2 มิติ: สมุดบันทึกคะแนน
  5. ยูทิลิตี 2 มิติในคลาสตัวช่วย (ปรับโครงสร้างโค้ด)
  6. การทำความสะอาดและตรวจสอบข้อมูล 2 มิติ
← กลับไปที่ Java Academy