จงเขียน Program คำนวณค่าจอดรถ โดยใช้ภาษา Java

จงเขียนโปรแกรมคำนวณค่าจอดรถ โดยใช้ภาษา Java

จงเขียน Program คำนวณค่าจอดรถ โดยมีเงื่อนไขต่อไปนี้

- มีการส่งพารามิเตอร์ดังนี้ double xxx(Date TimeIn , Date TimeOut)
- 3 ชั่วโมงแรกคิดค่าจอด 20 บาท ต่อไปชั่วโมงละ 10 บาท ถ้าเกิน 30 นาทีปัดขึ้น น้อยกว่าปัดลง
- ถ้าเกิน 24 ชั่วโมง คิดค่าจอดเป็นวัน วันละ 500 บาท เศษที่เกินคิดตาม Concept ข้างต้น

ตัวอย่างโปรแกรมภาษา Java ทีใช้ในการแก้ปัญหานี้

 import java.math.RoundingMode; import java.text.DateFormat; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;  public class parking {     public static void main(String[] args) throws ParseException {         Scanner in = new Scanner(System.in);         DateFormat formatT = new SimpleDateFormat("yyyy-MM-dd-HH-mm");                  System.out.print("TimeIn(yyyy-MM-dd-HH-mm) : ");         String fromin = in.nextLine();         Date din = formatT.parse(fromin);                  System.out.print("TimeOut(yyyy-MM-dd-HH-mm) : ");         String fromout = in.nextLine();         Date dout = formatT.parse(fromout);          System.out.println("You will have to pay : " + kidTang(din, dout) + " Baht");     }      public static double kidTang(Date datein, Date dateout){         double sum = 0;         double milliTime = dateout.getTime() - datein.getTime();          NumberFormat nf = NumberFormat.getNumberInstance();         nf.setMaximumFractionDigits(0);         nf.setRoundingMode(RoundingMode.HALF_UP);         int hour = Integer.parseInt(nf.format(milliTime/(1000*60*60)));          sum = sum + (hour/24)*500;         hour = hour%24;          if(hour <= 3) sum = sum + hour*20;         else sum = sum + 3*20 + (hour-3)*10;          return sum;     } } 
อันดับแรก เราก็ต้องรับ input เป็นวันและเวลาเข้ามา ในที่นี้ผมใช้ Scanner ในการรับข้อมูลทางแป้นพิมพ์ จากนั้น ก็ใช้ DateFormat เพื่อให้ป้อนข้อมูลเข้ามาตามรูปแบบที่กำหนดไว้ แล้วเอาไปเก็บไว้ในตัวแปร Date จากนั้นก็สร้างฟังก์ชัน ชื่อว่า kidTang ซึ่งรับพารามิเตอร์เป็นชนิด Date สองตัว และคืนค่าเป็น double ตามโจทย์ที่ให้มา ในฟังก์ชัน ก็ทำการคำนวณความแตกต่างของเวลาเป็นมิลลิวินาทีออกมา จากนั้น สร้าง NumberFormat เพื่อทำการจัดรูปแบบของตัวเลข ใช้ RoundingMode.HALF_UP เพื่อให้ปัดชั่วโมงขึ้นเมื่อเกินหรือเท่ากับ 30 นาที แล้วคำนวณชั่วโมงที่ได้ทั้งหมดออกมา จากนั้นก็ทำการคำนวณ โดยนำชั่วโมงทั้งหมดมาหาร 24 เพื่อให้ได้วันออกมา แล้วนำไปคูณ 500 จากนั้นเช็คว่าชั่วโมงที่เหลือ น้อยกว่าหรือเท่ากับ 3 หรือไม่