Skip to Content
CoursesCSC102คลาสหาค่าสูงสุดในอาร์เรย์ 2 มิติ

คลาสหาค่าสูงสุดในอาร์เรย์ 2 มิติ

โจทย์

เขียนคลาส Java ชื่อ Location ที่ระบุค่าสูงสุดและตำแหน่งของค่านั้นในอาร์เรย์สองมิติ คลาสควรมีคุณสมบัติดังนี้:

  • แอตทริบิวต์ (หรือฟิลด์ข้อมูล)
  • แอตทริบิวต์ public ชื่อ “row”, “column”, และ “maxValue” ที่เก็บค่าสูงสุดและดัชนีของมันในอาร์เรย์สองมิติ โดย row และ column เป็นชนิด int และ maxValue เป็นชนิด double
  • เมธอด
  • แสดงตำแหน่งของค่าสูงสุดและค่าของมันในอาร์เรย์

หมายเหตุ: องค์ประกอบจะถือว่า “สูงสุด” ก็ต่อเมื่อไม่มีองค์ประกอบอื่นที่มากกว่า

InputOutput
3 4
23.5 35 2 10
4.5 3 45 3.5
35 44 5.5 9.6
The location of the largest element is 45.0 at (1, 2).

โค้ด

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int row = scanner.nextInt(); int column = scanner.nextInt(); double[][] array = new double[row][column]; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { array[i][j] = scanner.nextDouble(); } } Location location = new Location(); location.row = row; location.column = column; location.maxValue = Integer.MIN_VALUE; location.getLargestElement(array); } } class Location { public int row; public int column; public double maxValue; public void getLargestElement(double[][] array) { int x = 0, y = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { double number = array[i][j]; if (number > maxValue) { maxValue = number; x = i; y = j; } } } System.out.println("The location of the largest element is " + maxValue + " at (" + x + ", " + y +")."); } }

ภาพรวมของโปรแกรม

โปรแกรมนี้ถูกสร้างขึ้นเพื่อหาค่าที่มากที่สุดในตารางข้อมูลสองมิติ (เหมือนตารางในโปรแกรม Excel) และบอกตำแหน่งของค่านั้น โปรแกรมประกอบด้วยสองส่วนหลัก:

  1. คลาส Main: เป็นส่วนที่รับข้อมูลจากผู้ใช้และเริ่มต้นการทำงาน
  2. คลาส Location: เป็นส่วนที่ค้นหาค่าที่มากที่สุดและตำแหน่งของมัน

คลาส Main

import java.util.Scanner; public class Main { public static void main(String[] args) { // โค้ดอยู่ที่นี่ } }
  • import java.util.Scanner;: บรรทัดนี้บอกโปรแกรมว่าเราจะใช้เครื่องมือที่ชื่อ Scanner เพื่อรับข้อมูลจากผู้ใช้
  • public class Main: นี่คือการประกาศคลาสหลักของเรา ซึ่งเป็นที่เก็บโค้ดทั้งหมด
  • public static void main(String[] args): นี่คือจุดเริ่มต้นของโปรแกรม ทุกอย่างเริ่มทำงานจากที่นี่

ขั้นตอนการทำงานในคลาส Main

  1. รับขนาดของตาราง:
Scanner scanner = new Scanner(System.in); int row = scanner.nextInt(); int column = scanner.nextInt();
  • สร้างเครื่องมือ Scanner เพื่อรับข้อมูล
  • รับจำนวนแถว (row) และจำนวนคอลัมน์ (column) จากผู้ใช้
  1. สร้างและเติมข้อมูลลงในตาราง:
double[][] array = new double[row][column]; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { array[i][j] = scanner.nextDouble(); } }
  • สร้างตารางว่างๆ ขนาดตามที่ผู้ใช้กำหนด
  • วนลูปเพื่อรับค่าจากผู้ใช้และเติมลงในตาราง
  1. ใช้คลาส Location เพื่อหาค่าสูงสุด:
Location location = new Location(); location.row = row; location.column = column; location.maxValue = Integer.MIN_VALUE; location.getLargestElement(array);
  • สร้างวัตถุ location จากคลาส Location
  • กำหนดค่าเริ่มต้นให้กับ row, column, และ maxValue
  • เรียกใช้เมธอด getLargestElement เพื่อหาค่าสูงสุดในตาราง

คลาส Location

class Location { public int row; public int column; public double maxValue; public void getLargestElement(double[][] array) { // โค้ดอยู่ที่นี่ } }
  • คลาสนี้มีตัวแปร 3 ตัว: row, column, และ maxValue
  • มีเมธอด getLargestElement ที่ใช้หาค่าสูงสุดในตาราง

การทำงานของเมธอด getLargestElement

public void getLargestElement(double[][] array) { int x = 0, y = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { double number = array[i][j]; if (number > maxValue) { maxValue = number; x = i; y = j; } } } System.out.println("The location of the largest element is " + maxValue + " at (" + x + ", " + y +")."); }
  1. เริ่มต้นด้วยการกำหนดตัวแปร x และ y เป็น 0 (จะใช้เก็บตำแหน่งของค่าสูงสุด)
  2. วนลูปผ่านทุกช่องในตาราง:
    • ถ้าเจอค่าที่มากกว่า maxValue ปัจจุบัน:
    • อัปเดต maxValue เป็นค่าใหม่ที่พบ
    • จดจำตำแหน่ง x และ y ของค่านั้น
  3. เมื่อวนลูปครบทุกช่อง จะได้ค่าสูงสุดและตำแหน่งของมัน
  4. พิมพ์ผลลัพธ์ออกมา บอกทั้งค่าสูงสุดและตำแหน่งของมัน
ปรับปรุงล่าสุด