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

| ไอที | Java | 16039

จงเขียนโปรแกรมคำนวณค่าจอดรถ โดยใช้ภาษา 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 หรือไม่

comments