วันเสาร์ที่ 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

วันพุธที่ 11 มิถุนายน พ.ศ. 2557

ตัวอย่างโค้ด สำหรับ get ค่า method ทั้งหมดที่อยู่ใน Class

ตัวอย่างโค้ด สำหรับ get ค่า method ทั้งหมดที่อยู่ใน Class

ตัวอย่างโค้ด ตัวอย่างโปรแกรมนี้ เป็นตัวอย่างโค้ดที่เอาไว้สำหรับหาค่า method ทั้งหมดที่อยู่ใน Class ซึ่งใน Class จะมี method อยู่ เราสามารถหาค่า method ทั้งหมดได้

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

import java.lang.reflect.Method;
import java.util.Date;

public class UseCode {
public static void main(String[] args) {
Method[] methodAll = getMethodMapFromClass(FunctionExam.class);
for (Method method : methodAll) {
System.out.println("Method_Name : " + method.getName());
System.out.println("Return_Type : " + method.getReturnType());
}
}

public static Method[] getMethodMapFromClass(Class<?> className) {
Method[] methodClass = className.getMethods();
return methodClass;
}
}

class FunctionExam {
private String code;
private Date startDate;
private String title;
private Long view;

public String getCode() {
return code;
}

public Date getStartDate() {
return startDate;
}

public String getTitle() {
return title;
}

public Long getView() {
return view;
}

public void setCode(String code) {
this.code = code;
}

public void setStartDate(Date startDate) {
this.startDate = startDate;
}

public void setTitle(String title) {
this.title = title;
}

public void setView(Long view) {
this.view = view;
}
}

จากโค้ดเรามี Class ที่ชื่อว่า FunctionExam ซึ่งมี Method อยู่ข้างในหลาย ๆ method ถ้าเราไม่รู้เราจะหาค่า method ทั้งหมดออกมาได้ ซึ่งในที่นี้จะสร้าง method ขึ้นมาสำหรับหา method ทั้งหมดใน Class ซึ่งก็คือ method ที่ชื่อ getMethodMapFromClass แล้วส่งค่า Class ที่ต้องการหาค่า method ไป แล้วใน method จะรีเทิร์น Array ของ method ทั้งหมดออกมา


yengo หรือ buzzcity

วันจันทร์ที่ 9 มิถุนายน พ.ศ. 2557

ตัวอย่างโค้ดโปรแกรมหาค่าที่มากที่สุด ไม่จำกัดจำนวนรอบ ใส่ได้หลาย ๆ ค่า

ตัวอย่างโค้ดโปรแกรมหาค่าที่มากที่สุด ไม่จำกัดจำนวนรอบ ใส่ได้หลาย ๆ ค่า

โปรแกรมนี้เป็นตัวอย่างโค้ดโปรแกรมที่จะให้กรอกจำนวนมาหลาย ๆ จำนวนกี่จำนวนก็ได้ เป็นตัวเลข แล้วโปรแกรมจะหาจำนวนที่มากที่สุดที่กรอกเข้ามา จากโปรแกรมที่จะให้กรอกหลาย ๆ จำนวน กี่จำนวนก็ได้ ซึ่งเมื่อต้องการหยุด จะพิมพ์คำว่า exit

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

import java.util.ArrayList;
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));
}

System.out.println("Value All : " + listNumber);
if(!listNumber.isEmpty()){
int max = listNumber.get(0);
for (Integer number : listNumber) {
if(number > max) max = number;
}
System.out.println("Max : " + max);
}
else{
System.out.println("No Data");
}
}
}

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

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

เราจะเช็คค่าจาก ArrayList ว่ามีค่าหรือไม่ โดยใช้คำสั่ง isEmpty() ถ้ามีค่าเราก็ให้ค่าสูงสุดเป็นค่าแรก จากนั้นเราก็วนลูป ArrayList หาค่าสูงสุด โดยเช็คว่าถ้าค่าแต่ละรอบมีค่ามากกว่าค่าปัจจุบันให้นำค่าแต่ละรอบไปเก็บไว้ในตัวแปร ที่ชื่อว่า max จากนั้นเราก็จะได้ค่าที่สูงสุดออกมา แล้วก็ปริ้นออกมาทางหน้าจอ แต่เมื่อไม่มีข้อมูล เราก็ปริ้นว่า No Data

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


yengo หรือ buzzcity

ตัวอย่างโค้ดโปรแกรมภาษาจาวา โปรแกรมสำหรับนับตัวเลข ขึ้นลงทีละหนึ่ง แล้วปิดปุ่ม

ตัวอย่างโค้ดโปรแกรมภาษาจาวา โปรแกรมสำหรับนับตัวเลข ขึ้นลงทีละหนึ่ง แล้วปิดปุ่ม

ตัวอย่างโค้ดตัวอย่างโปรแกรมนี้ เป็นโปรแกรมที่นับตัวเลขขึ้นทีละหนึ่ง และนับลงทีละหนึ่ง โดยใช้ Java GUI ซึ่งโปรแกรมจะมีปุ่มให้กดสองปุ่ม คือปุ่มบวกทีละหนึ่ง กับปุ่มลบทีละหนึ่ง เมื่อกดปุ่มบวกหรือปุ่มลบจะมีค่าที่นับขึ้นหรือนับลงตามปุ่มที่กด

เมื่อกดถึงค่าต่ำสุดของจำนวนที่กำหนดไว้แล้ว ปุ่มลบจะกดไม่ได้
เมื่อกดถึงค่าสูงสุดของจำนวนที่กำหนดไว้แล้ว ปุ่มบวกจะกดไม่ได้

โค้ดในที่นี้จะเซ็ตค่าเริ่มต้นให้ค่าเริ่มต้นเป็น 1 มีค่าต่ำสุดเป็น 0 และมีค่าสูงสุดเป็น 20

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

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JavaCodeExam extends JFrame implements ActionListener {
private static final String TEXT_PLUS = " + ";
private static final String TEXT_SUBTRACT = " - ";

private JFrame frame;
private JLabel showCount;
private Integer count;
private JButton btnPlus;
private JButton btnSubtract;
private Integer min;
private Integer max;

public static void main(String[] args) throws Exception {
new JavaCodeExam();
}

public JavaCodeExam() {
this.frame = new JFrame();
this.frame.setVisible(true);

this.frame.setTitle("Frame By Java Code Exam");
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// สร้าง Panel สำหรับปุ่ม
JPanel panelBtn = new JPanel();

this.btnPlus = new JButton(TEXT_PLUS);
this.btnPlus.addActionListener(this);
panelBtn.add(this.btnPlus, BorderLayout.LINE_START);

this.btnSubtract = new JButton(TEXT_SUBTRACT);
this.btnSubtract.addActionListener(this);
panelBtn.add(this.btnSubtract, BorderLayout.LINE_END);

// สร้าง Panel สำหรับแสดงจำนวน
JPanel panelText = new JPanel();

this.showCount = new JLabel();
panelText.add(this.showCount, BorderLayout.SOUTH);

// สร้าง Panel สำหรับเก็บทั้งหมด
        JPanel panelFull = new JPanel(new BorderLayout());
        panelFull.add(panelBtn, BorderLayout.NORTH); // เซ็ตให้อยู่ข้างบน
        panelFull.add(panelText,  BorderLayout.CENTER); // เซ็ตให้อยู่ตรงกลาง

        this.frame.add(panelFull);
this.frame.setSize(400, 300);

// สร้างค่าเริ่มต้นสำหรับตัวแปรต่าง ๆ
this.count = 1;
this.min = 0;
this.max = 20;
}

@Override
public void actionPerformed(ActionEvent e) {
if(TEXT_PLUS.equals(e.getActionCommand())){
this.count++;
}
else{
this.count--;
}
this.showCount.setText(this.count.toString());

// เช็คว่าค่านั้น เกินกว่าหรือน้อยกว่าจำนวนต่ำสุดกับสูงสุดหรือไม่
this.btnPlus.setEnabled(this.count < this.max);
this.btnSubtract.setEnabled(this.count > this.min);
}
}

จากโค้ดข้างบน
- เราสร้าง Panel สำหรับเก็บปุ่มบวกกับปุ่มลบ
- เราสร้าง Panel สำหรับเก็บ Label ไว้สำหรับแสดงค่า
จากโค้ดเมื่อเรากดปุ่มบวกจะเพิ่มค่า count ซึ่งค่านี้ได้กำหนดค่าเริ่มต้นเป็น 1 เมื่อกดแล้วจะเพิ่มขึ้นเรื่อย ๆ เมื่อถึงขนาดสูงสุด นั่นคือ จำนวน max ซึ่งเราเซ็ตค่าให้เท่ากับ 20 ปุ่มจะปิด ซึ่งใช้คำสั่ง setEnabled ในการเปิดหรือปิดปุ่ม และปุ่มลบก็ทำคล้าย ๆ กัน

ตัวอย่างผลลัพธ์โปรแกรมที่ได้จากโค้ด


yengo หรือ buzzcity