ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ
ค้นหาค่าสูงสุดของแต่ละแถวและคอลัมน์อย่างปลอดภัย โดยรองรับแถวที่มีความยาวต่างกัน และสร้างเมทริกซ์ทรานสโพสทั้งแบบสี่เหลี่ยมและแบบแถวต่างความยาว พร้อมฝึกพิมพ์ให้ตรงแนว
ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 6 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 6 บทเรียน
ค่าสูงสุดของแต่ละแถว
ค่าสูงสุดของแต่ละแถว: คำนวณค่าสูงสุดของแต่ละแถวโดยตรวจสอบสมาชิกในแถวนั้นหนึ่งครั้ง
public class Main {
public static void main(String[] args) {
// Example jagged array
int[][] m = {
{1, 7, 3},
{4, 9, 2, 11},
{6}
};
int r = 1; // choose which row to check (row index 1 → {4, 9, 2, 11})
// Max of a single row r
int max = Integer.MIN_VALUE; // start with very small number
for (int c = 0; c < m[r].length; c = c + 1) {
if (m[r][c] > max) {
max = m[r][c]; // update if current value is larger
}
}
System.out.println("Max value in row " + r + " = " + max);
}
}
ค่าสูงสุดของแต่ละคอลัมน์
ค่าสูงสุดของแต่ละคอลัมน์ในอาร์เรย์ที่มีแถวความยาวไม่เท่ากัน: ตรวจสอบความยาวของแต่ละแถวก่อนอ่านคอลัมน์ c
public class Main {
public static void main(String[] args) {
// Example jagged array (rows with different lengths)
int[][] m = {
{1, 7, 3},
{4, 9}, // shorter row (only 2 columns)
{6, 2, 11, 5} // longer row (4 columns)
};
int c = 2; // column index to check (3rd column)
// Max of column c across all rows
int colMax = Integer.MIN_VALUE;
for (int r = 0; r < m.length; r = r + 1) {
// Guard: only access if this row has column c
if (c < m[r].length) {
if (m[r][c] > colMax) {
colMax = m[r][c]; // update maximum
}
}
}
System.out.println("Max value in column " + c + " = " + colMax);
}
}
สลับแถวและคอลัมน์แบบสี่เหลี่ยม
การสลับแถวและคอลัมน์ (แบบสี่เหลี่ยม): สลับแถวกับคอลัมน์เมื่อทุกแถวมีความยาวเท่ากัน
public class Main {
public static void main(String[] args) {
// Example 2D rectangular matrix (3 rows × 2 columns)
int[][] m = {
{1, 2},
{3, 4},
{5, 6}
};
// Dimensions
int rows = m.length; // number of rows in m
int cols = m[0].length; // number of columns in m
// Transposed matrix (C × R)
int[][] t = new int[cols][rows];
// Fill transposed matrix
for (int r = 0; r < rows; r = r + 1) {
for (int c = 0; c < cols; c = c + 1) {
t[c][r] = m[r][c]; // swap row/column
}
}
// Print original matrix
System.out.println("Original matrix:");
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
System.out.print(m[r][c] + " ");
}
System.out.println();
}
// Print transposed matrix
System.out.println("Transposed matrix:");
for (int r = 0; r < t.length; r++) {
for (int c = 0; c < t[r].length; c++) {
System.out.print(t[r][c] + " ");
}
System.out.println();
}
}
}
สลับแถวและคอลัมน์แบบแถวไม่เท่ากัน
การสลับแถวและคอลัมน์ (แบบแถวความยาวไม่เท่ากัน): สร้างคอลัมน์ให้เป็นแถว โดยกำหนดขนาดแต่ละแถวตามความยาวของแถวที่ยาวที่สุดและป้องกันการอ่านข้อมูลที่ไม่มีอยู่
public class Main {
public static void main(String[] args) {
// Example jagged array (rows of different lengths)
int[][] m = {
{1, 2, 3},
{4, 5},
{6}
};
// 1) Find the maximum number of columns across all rows
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) {
maxCols = m[r].length;
}
}
// 2) Create transpose: it will have maxCols rows
int[][] t = new int[maxCols][];
// 3) Fill the transposed matrix
for (int c = 0; c < maxCols; c = c + 1) {
// Each transposed row has as many elements as original rows
t[c] = new int[m.length];
for (int r = 0; r < m.length; r = r + 1) {
// If row is too short, pad with 0
t[c][r] = (c < m[r].length) ? m[r][c] : 0;
}
}
// Print original jagged array
System.out.println("Original jagged array:");
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();
}
// Print transposed array
System.out.println("Jagged-safe transpose:");
for (int r = 0; r < t.length; r++) {
for (int c = 0; c < t[r].length; c++) {
System.out.print(t[r][c] + " ");
}
System.out.println();
}
}
}
ตัวช่วยจัดรูปแบบ
ใช้ตัวช่วยเพื่อคำนวณความกว้างคอลัมน์และพิมพ์เมทริกซ์ที่จัดแนวเพื่อเปรียบเทียบ
public class Main {
// Compute per-column widths for a (possibly jagged) 2D int array.
// For each column index c, we find the longest string length among m[r][c] (for rows that have that column).
static int[] widths(int[][] m) {
// 1) Find the maximum number of columns across all rows
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
// 2) Prepare width array (initialized to 0)
int[] w = new int[maxCols];
// 3) For each existing cell, compute the string length and keep the max per column
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;
}
}
// 4) Ensure each column has at least width 1
for (int c = 0; c < w.length; c = c + 1) {
if (w[c] < 1) w[c] = 1;
}
return w;
}
// Print a (possibly jagged) matrix so that each column is right-aligned using the widths[] computed above.
static void printAligned(int[][] m) {
int[] w = widths(m); // column widths
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
// Convert number to string
String s = Integer.toString(m[r][c]);
// Left-pad with spaces until it matches the target column width
while (s.length() < w[c]) s = " " + s;
// Append to the line; add a single space between columns (but not after the last one)
line = line + s + (c + 1 < m[r].length ? " " : "");
}
// Print the fully assembled row
System.out.println(line);
}
}
public static void main(String[] args) {
// Demo with a jagged matrix (different row lengths)
int[][] m = {
{1, 200, 3},
{45, 6},
{7, 89, 1000, 11}
};
System.out.println("Aligned output:");
printAligned(m);
}
}
สาธิตการสลับแถวและคอลัมน์
เรียกใช้: เปรียบเทียบการพิมพ์แบบจัดแนวของเมทริกซ์แบบสี่เหลี่ยมกับเมทริกซ์ที่สลับแถวและคอลัมน์ จากนั้นดูเมทริกซ์ที่มีแถวความยาวไม่เท่ากัน ค่าสูงสุดของแต่ละคอลัมน์ และเมทริกซ์ที่สลับแถวและคอลัมน์พร้อมเติมช่องว่าง
public class Main {
// Compute column maxima (jagged-safe)
static int[] colMaxima(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[] max = new int[maxCols];
for (int c = 0; c < maxCols; c = c + 1) {
int best = Integer.MIN_VALUE;
boolean seen = false;
for (int r = 0; r < m.length; r = r + 1) {
if (c < m[r].length) {
if (!seen || m[r][c] > best) { best = m[r][c]; seen = true; }
}
}
max[c] = seen ? best : 0;
}
return max;
}
// Transpose rectangular
static int[][] transposeRect(int[][] m) {
int rows = m.length;
int cols = m[0].length;
int[][] t = new int[cols][rows];
for (int r = 0; r < rows; r = r + 1) {
for (int c = 0; c < cols; c = c + 1) t[c][r] = m[r][c];
}
return t;
}
// Jagged-safe transpose (pads missing with 0)
static int[][] transposeJagged(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[][] t = new int[maxCols][];
for (int c = 0; c < maxCols; c = c + 1) {
t[c] = new int[m.length];
for (int r = 0; r < m.length; r = r + 1) t[c][r] = (c < m[r].length) ? m[r][c] : 0;
}
return t;
}
// Helpers
static int[] widths(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;
}
}
for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
return w;
}
static void printAligned(int[][] m) {
int[] w = widths(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) {
// Rectangular example for transpose
int[][] rect = {
{1, 2, 3},
{4, 5, 6}
};
// Jagged example for maxima and jagged transpose
int[][] jag = {
{9, 12, 7},
{5},
{8, 10}
};
System.out.println("rect:");
printAligned(rect);
System.out.println("transpose(rect):");
printAligned(transposeRect(rect));
System.out.println("jag (jagged):");
printAligned(jag);
int[] cm = colMaxima(jag);
System.out.print("col maxima: ");
for (int i = 0; i < cm.length; i = i + 1) System.out.print(cm[i] + (i + 1 < cm.length ? " " : ""));
System.out.println();
System.out.println("transpose(jag, padded):");
printAligned(transposeJagged(jag));
}
}
ตรวจสอบค่าสูงสุดของคอลัมน์
ตรวจสอบสั้น ๆ: สำหรับเมทริกซ์ที่มีแถวความยาวไม่เท่ากัน คุณคำนวณค่าสูงสุดของคอลัมน์ c อย่างไร
ทบทวนและถัดไป
ทบทวน: คุณคำนวณค่าสูงสุดของแถวและคอลัมน์ สลับแถวและคอลัมน์ของเมทริกซ์แบบสี่เหลี่ยม และสร้างเมทริกซ์ที่สลับแถวและคอลัมน์โดยรองรับแถวความยาวไม่เท่ากันด้วยการเติมช่องว่าง นอกจากนี้คุณยังจัดรูปแบบผลลัพธ์ให้จัดแนว
คำถามที่พบบ่อย
บทเรียน “ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 6 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ”
ค้นหาค่าสูงสุดของแต่ละแถวและคอลัมน์อย่างปลอดภัย โดยรองรับแถวที่มีความยาวต่างกัน และสร้างเมทริกซ์ทรานสโพสทั้งแบบสี่เหลี่ยมและแบบแถวต่างความยาว พร้อมฝึกพิมพ์ให้ตรงแนว คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 6 บทเรียน
บทเรียน “ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานอาร์เรย์ 2 มิติและการวนซ้ำแบบซ้อนกัน
- อาร์เรย์แบบแถวความยาวต่างกันและการจัดรูปแบบตาราง
- ค่าสูงสุดรายแถว/คอลัมน์ การสลับแถวคอลัมน์ และการจัดรูปแบบ
- โครงงานขนาดเล็ก 2 มิติ: สมุดบันทึกคะแนน
- ยูทิลิตี 2 มิติในคลาสตัวช่วย (ปรับโครงสร้างโค้ด)
- การทำความสะอาดและตรวจสอบข้อมูล 2 มิติ