การวิเคราะห์ทางสถิติเบื้องต้นของอาร์เรย์สองมิติ
โจทย์
เขียนโปรแกรมภาษา Java ที่ทำการวิเคราะห์ทางสถิติเบื้องต้นบนอาร์เรย์สองมิติของจำนวนเต็ม โปรแกรมของคุณจะคำนวณและแสดงสถิติต่อไปนี้จากค่าในอาร์เรย์:
- ผลรวม: ผลรวมทั้งหมดของค่าทั้งหมดในอาร์เรย์
- ค่าต่ำสุด: จำนวนที่น้อยที่สุดในอาร์เรย์
- ค่าสูงสุด: จำนวนที่มากที่สุดในอาร์เรย์
- ค่าเฉลี่ย: ค่าเฉลี่ยของจำนวนทั้งหมดในอาร์เรย์
- ค่ามัธยฐาน: ค่ากลางเมื่อจำนวนในอาร์เรย์ถูกเรียงลำดับจากน้อยไปมาก ถ้าจำนวนสมาชิกเป็นเลขคู่ ค่ามัธยฐานคือค่าเฉลี่ยของสองจำนวนตรงกลาง
โปรแกรมจะรับค่าจำนวนเต็มสองค่าก่อน คือ m และ n ซึ่งแทนจำนวนแถวและคอลัมน์ของอาร์เรย์ ตามด้วยสมาชิกของอาร์เรย์ขนาด m x n
| Input | Output |
|---|---|
| 2 2 3 7 2 4 | Sum: 16 Minimum value: 2 Maximum value: 7 Average value: 4.0 Median value: 3.5 |
โค้ด
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int[][] array = new int[m][n];
int totalElements = m * n;
int sum = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int currentIndex = 0;
int[] medianArray = new int[totalElements];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
array[i][j] = scanner.nextInt();
sum += array[i][j];
if (array[i][j] < min) min = array[i][j];
if (array[i][j] > max) max = array[i][j];
medianArray[currentIndex] = array[i][j];
currentIndex++;
}
}
double average = (double) sum / totalElements;
Arrays.sort(medianArray);
double median = (totalElements % 2 == 0)
? (medianArray[totalElements / 2 - 1] + medianArray[totalElements / 2]) / 2.0
: medianArray[totalElements / 2];
System.out.println("Sum: " + sum);
System.out.println("Minimum value: " + min);
System.out.println("Maximum value: " + max);
System.out.println("Average value: " + average);
System.out.println("Median value: " + median);
}
}คำอธิบาย
import java.util.Arrays;
import java.util.Scanner;- เราเริ่มต้นด้วยการนำเข้า (import) คลาสที่จำเป็น
Arraysใช้สำหรับการจัดการอาร์เรย์ เช่น การเรียงลำดับScannerใช้สำหรับการรับข้อมูลจากผู้ใช้
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);- เราสร้างคลาสหลักชื่อ
Main - เมธอด
mainเป็นจุดเริ่มต้นของโปรแกรม - เราสร้างออบเจ็กต์
Scannerเพื่อรับข้อมูลจากผู้ใช้
int m = scanner.nextInt();
int n = scanner.nextInt();- เรารับค่า
mและnจากผู้ใช้ ซึ่งเป็นจำนวนแถวและคอลัมน์ของอาร์เรย์
int[][] array = new int[m][n];
int totalElements = m * n;
int sum = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int currentIndex = 0;- เราสร้างอาร์เรย์สองมิติขนาด
m x n totalElementsคือจำนวนสมาชิกทั้งหมดในอาร์เรย์- เราเตรียมตัวแปรสำหรับเก็บผลรวม (
sum), ค่าต่ำสุด (min), และค่าสูงสุด (max) currentIndexใช้สำหรับติดตามตำแหน่งปัจจุบันในอาร์เรย์เพื่อหาค่ามัธยฐาน
int[] medianArray = new int[totalElements];- เราสร้างอาร์เรย์หนึ่งมิติเพื่อเก็บค่าทั้งหมดสำหรับการคำนวณค่ามัธยฐาน
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
array[i][j] = scanner.nextInt();
sum += array[i][j];
if (array[i][j] < min) min = array[i][j];
if (array[i][j] > max) max = array[i][j];
medianArray[currentIndex] = array[i][j];
currentIndex++;
}
}- เราใช้ลูปซ้อนเพื่อรับค่าจากผู้ใช้และเก็บในอาร์เรย์สองมิติ
- ในขณะเดียวกัน เราคำนวณผลรวม, ค่าต่ำสุด, และค่าสูงสุด
- เราเก็บค่าทั้งหมดในอาร์เรย์หนึ่งมิติ (
medianArray) เพื่อใช้ในการคำนวณค่ามัธยฐาน
double average = (double) sum / totalElements;- เราคำนวณค่าเฉลี่ยโดยหารผลรวมด้วยจำนวนสมาชิกทั้งหมด
Arrays.sort(medianArray);
double median = (totalElements % 2 == 0)
? (medianArray[totalElements / 2 - 1] + medianArray[totalElements / 2]) / 2.0
: medianArray[totalElements / 2];- เราเรียงลำดับ
medianArrayโดยใช้Arrays.sort()เรียงลำดับสมาชิกในอาร์เรย์จากน้อยไปมากเพื่อหาค่ามัธยฐาน - ถ้าจำนวนสมาชิกเป็นเลขคู่ เราใช้ค่าเฉลี่ยของสองจำนวนตรงกลาง
- ถ้าจำนวนสมาชิกเป็นเลขคี่ เราใช้ค่าตรงกลาง
System.out.println("Sum: " + sum);
System.out.println("Minimum value: " + min);
System.out.println("Maximum value: " + max);
System.out.println("Average value: " + average);
System.out.println("Median value: " + median);- สุดท้าย เราแสดงผลลัพธ์ทั้งหมดที่คำนวณได้
ปรับปรุงล่าสุด