Category Java

FizzBuzz Problem without if (ปฐมบท)

FizzBuzz With Out If Part 1 (AI Generate Image via Bing AI)

จากบทความที่แล้ว FizzBuzz Problem ไปนะครับ ต่อไปผมลอง Refactor Code อีกรอบ โดยมีเงื่อนไขว่าห้ามใช้ IF ในส่วนของ Logic Fizz และ Buzz ทำไมถึงต้องห้ามใช้ IF เพราะ การใช้ IF ส่งผลให้เกิดความมักง่ายของ Developer ทำให้เกิดปัญหาในการแก้ไข หรือพัฒนา Module เพิ่มเติม ต้องไปแก้ Code จนเกินความจำเป็น และทำให้เกิด Defect(ฺBug) เพิ่มขึ้นด้วย ซึ่งมีแนวคิดทางวิชาการมาสนันสนุนแนวคิดนี้อย่าง The Open Close Principle (OCP) และ High Coupling &…

FizzBuzz Problem

FizzBuzz Intro (AI Generate Image via Bing AI)
FizzBuzz เป็นโจทย์ฝึกสมองเด็ก ที่ใช้ช่วยในการเรียนรู้เรื่องการหาร ซึ่งสามารถไปอ่านกฏเพิ่มเติมได้จากใน WIKI: FIZZBUZZ ครับ แต่บทความนี้ผมขอนำกฏของ FizzBuzz มาประยุกต์กับการเขียนโปรแกรม

[JAVA] Abstract คือ อะไร และต่างกับ Interface อย่างไร

หลายๆคนคงสงสัยว่า Keyword Abstract มัน คือ อะไร และเมื่อไหร่ที่ควรจะใช้ วันนี้ผมมีตัวอย่างง่ายๆในการอธิบายนะครับ โดยอาจจะแทรกเนื้อหาเกี่ยวกับ interface เพิ่มเข้าไปด้วยครับ เพราะลายคนสับสนกันเยอะ  โดยผมขอเริ่มโจทย์ที่เราต้องใช้ Abstract Class ดังนี้ จงเขียน class Student ซึ่งประกอบด้วย data members ดังนี้ name (ชื่อนิสิต), test (อะเรย์ของคะแนน), NUM_OF_TESTS (ค่าคงที่เป็นจำนวนของ test) และ courseGrade (เกรดของวิชา) ให้สร้าง Constructor, methods get/set และ abstract method computeCourseGrade…

[JAVA] Increase Eclipse performance

config eclipse.ini เพิ่ม Performance ให้ Eclipse ——- -startup plugins –launcher.library plugins -product org.eclipse.epp.package.standard.product –launcher.defaultAction openFile –launcher.XXMaxPermSize 384M -showsplash org.eclipse.platform –launcher.XXMaxPermSize 384m –launcher.defaultAction openFile –launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.7 -server -XX:PermSize=384m -XX:MaxPermSize=384m -Xss4m -Xms1G -Xmx1G -XX:MaxGCPauseMillis=10 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC

[Android] Error:The SDK Build Tools revision (19.0.3) is too low for project

วันนี้พอ Update Android Studio เป็นเวอร์ชัน 0.6.0 มาใหม่ พอเปิดโปรแกรมขึ้นมาใหม่พบ Error Message ดังรูปเลยครับ สาเหตุ build.gradle มันชี้ไปผิดเวอร์ชั่น ที่ไม่เหมาะสมกับ SDK วิธีการแก้ แบบที่ 1: แก้จากไฟล์ bulid.gradle [xml] apply plugin: ‘android’ android { compileSdkVersion 19 buildToolsVersion ‘19.1.0’ //แก้ไข Build Tools Version ให้เป็นไปตามที่ SDK ต้องการ defaultConfig { minSdkVersion…

[Java] NaN คือ อะไร

บ่อยครั้งที่เราเขียนโปรแกรมที่เกี่ยวกับการคำนวณตัวเลขต่างๆ ไปๆมาๆ เกิด Exception ตัวอย่าง เช่น สาเหตุของปัญหานี้ คือ การคำนวณแล้วเกิด NaN ซึ่งเป็น NumberFormatException อยากรู้ว่าน้อง NaN คือ อะไร สามารถอ่านต่อได้เลยครับ

[Java] การรับค่าผ่าน command line โดยใช้ Eclipse

Q: เคยสงสัยหรือไม่ ว่า public static void main(String[] args) ตรงที่ตัวแดงไว้ มีไว้ทำอะไร A: มีไว้ เพื่อทำการรับค่าจากส่วนของ command line(หน้าจอดำๆ ของMS Dos) เพราะ java ในยุคแรกๆต้องรันผ่านหน้าจอ Dos  โดยตัว String[] args นั้นไม่จำเป็นต้องเขียนก็ได้ แต่ถ้าไม่ระบุ (String[] args) method main มันจะกลายเป็นแค่ method ทั่วๆไป เพราะ jvm specification ระบุ signature ไว้ว่ามันจะวิ่งไปทำงานที่ main ที่รับ parameter เป็น…

[Java] อยากรู้ Directory ของโปรแกรมที่เราทำงานอยู่

เมื่อทำงานที่เกี่ยวกับไฟล์ ไม่ว่าจะเป็นไฟล์รูป เท็กซ์ไฟล์ หรือไฟล์แบบอื่นๆ สิ่งที่สำคัญที่จะขาดไม่ได้เลยนั้น คือ Path ที่อยู่ของไฟล์ สำหรับนักพัฒนาโปรแกรมมือใหม่อาจจะยังไม่ใส่ใจเรื่องนี้ หรือคิดเพียงว่าเครื่องเราแสดงผล OK เป็นใช้ได้ แต่ปัญหาจะมาเกิดตอนไปรันที่เครื่องอื่นๆ เช่น กรณีตัวอย่าง โปรแกรมตัวอย่างนี้เป็นเกม Hang man ที่พัฒนาด้วยภาษา Java ซึ่งมีการกำหนด Path ของภาษา Background ตาม Code ต่อไปนี้ เมื่อนำรันที่เครื่องของน้อง กุ๊ก ปรากฏว่าสามารถแสดงผลได้สวยงาม ดังรูป น้อง กุ๊ก ส่งให้นายแว่นตรวจสอบปรากฏว่าภาษาพื้นหลังไม่ขึ้น ซวยและทีนี้ (นายแว่นวางไฟล์ไว้ในไดร์ฟ D) ปัญหา  เพราะโปรแกรมมีการกำหนดแบบ absolute path…