วันเสาร์ที่ 14 มิถุนายน พ.ศ. 2557

ตัวอย่างโค้ดโปรแกรมหาค่ากลางข้อมูล หาค่ามัธยฐาน

ตัวอย่างโค้ดโปรแกรมหาค่ากลางข้อมูล หาค่ามัธยฐาน

ตัวอย่างโค้ด ตัวอย่างโปรแกรมนี้ เป็นตัวอย่างการหาค่ากลางของข้อมูล ซึ่งค่าที่หาเป็นค่าของมัธยฐาน ซึ่งมัธยฐาน คืออะไรนั้น สามารถอ่านได้จาก http://www.mathmyself.com/M3/P41/ค่าเฉลี่ยเลขคณิต-มัธยฐานและฐานนิยมของข้อมูลที่ยังไม่แจกแจงความถี่.htm

ตัวอย่างโค้ด

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class UseCode {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<Integer> listNumber = new ArrayList<>();
String temp = "";

while(true){
System.out.print("input Number ('exit' For Break) : ");
temp = in.nextLine();
if("exit".equals(temp)) break;
listNumber.add(Integer.valueOf(temp));
}
Collections.sort(listNumber);
System.out.println("Value All : " + listNumber);
if(!listNumber.isEmpty()){
int position = listNumber.size()/2;
double median = listNumber.get(position);
if(listNumber.size()%2 == 0){
median = (median + listNumber.get(position - 1))/2.0;
}
System.out.println("Median : " + median);
}
else{
System.out.println("No Data");
}
}
}

จากโค้ดข้างบน เราใช้ Scanner ในการอ่านค่าจากแป้นพิมพ์ จากนั้น เราจะใช้ nextLine() เพื่อนำค่าที่กรอกเข้ามาเป็น String แล้วนำไปตรวจสอบว่าเป็นคำว่า exit หรือไม่ ถ้าใช้ เราก็ break ออกจาก Loop

เราใช้ Loop while เพื่อวนไม่รู้จบจนกว่าจะพิมพ์คำว่า break จึงจะหยุดจาก Loop เมื่อกรอกเข้ามาเราจะนำค่าที่ได้ไปแปลงเป็น Integer แล้วเก็บไว้ใน ArrayList ที่เก็บชนิดข้อมูลที่เป็น Integer เอาไว้

เมื่อได้ข้อมูลทั้งหมดมาแล้ว เราจะต้องนำข้อมูลทั้งหมดมาเรียงจากน้อยไปหามาก โดยการเรียงข้อมูลใน ArrayList นั้นจะใช้ Collections.sort แล้วส่ง ArrayList เข้าไป จากนั้นเราจะหาตำแหน่งตรงกลาง โดยหาค่าทั้งหมดแล้วหารด้วย 2 เมื่ได้แล้ว เราก็จะเช็คอีกทีว่า ค่าทั้งหมดที่ได้มานั้นเป็นจำนวนที่เป็นคู่หรือคี่ เพราะถ้าเป็นเลขคี่เราจะนำตัวนั้นมาตอบได้เลย แต่ถ้าเป็นตัวคู่เราจะต้องนำตัวตรงกลางสองตัวมาบวกกันก่อน แล้วค่อยหาร 2

ข้อควรระวัง ยังไม่ได้ตรวจสอบความผิดพลาด ซึ่งอาจจะเกิด Exception ได้ อย่างเช่นพิมพ์ค่าที่ไม่ได้เป็นตัวเลขที่นอกเหนือจากคำว่า exit

yengo หรือ buzzcity

ไม่มีความคิดเห็น :

แสดงความคิดเห็น