通过停车场计算车费案例练习JavaIO流

一、导读

本文着重讲解java IO流如FileWriter,FileReader....

好文章 记得 收藏+点赞+关注 !!!

二、案例分析

停车场有 进场出场的功能:

  • 进场时:采用键盘录入的方式,录入汽车的品牌、颜色、车牌号,把品牌、颜色、车牌号,以及进场时间写入carInfo.txt文件中。
  • 出场时:键盘录入车牌号,去文件中查找该车的进场时间,并计算停车时间。
    30分钟内免费,过后每小时5元,超过一小时按一小时计算。

直接上代码!
三、代码以运行结果

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * 案例要求:
 * 停车场有进场和出场的功能:
 * 1. 进场时:采用键盘录入的方式,录入汽车的品牌、颜色、车牌号,把品牌、颜色、车牌号,以及进场时间写入carInfo.txt文件中。
 * 2. 出场时:键盘录入车牌号,去文件中查找该车的进场时间,并计算停车时间。
 * 3. 30分钟内免费,过后每小时5元,超过一小时按一小时计算。
 *
 * @author JIaMing
 * @since 2021/12/9/0009 下午 16:38
 **/

public class Test01 {

        //入场功能
    public static void enter() throws IOException {

        //从键盘获取汽车信息并写入文件CarInfo.txt
        Scanner scanner = new Scanner(System.in);
        ParkingLot parkingLot = new ParkingLot();
        System.out.println("请输入你的汽车的品牌");
        parkingLot.setBrand(scanner.nextLine());
        System.out.println("请输入你的汽车的颜色");
        parkingLot.setColor(scanner.nextLine());
        System.out.println("请输入你的汽车的车牌号");
        parkingLot.setNum(scanner.nextLine());

        //获取系统时间
        long now = System.currentTimeMillis();
        parkingLot.setTime(now + "");

        //写入文件
        File file = new File("D:\\carInfo.txt");
        
        //判断文件是否存在
        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter fw = new FileWriter(file, true);
        
        StringBuilder sb = new StringBuilder();
        sb.append(parkingLot.getBrand()).append(",").append(parkingLot.getColor()).append(",").append(parkingLot.getNum()).append(",").append(parkingLot.getTime()).append("\r\n");
        String s1 = sb.toString();
        fw.write(s1);
        //一定要关闭流
        fw.close();
        System.out.println("写入文件成功");
    }

        //出场功能
    public static void exit() throws IOException {
        
        //当离开停车场时,输入车牌号,从文件中匹配车牌号,计算总共停车时间
        File file = new File("D:\\carInfo.txt");
        FileReader fr = new FileReader(file);
        StringBuilder sb = new StringBuilder();
        int len;
        char[] arr = new char[1024];
        //新建一个ArrayList
        ArrayList<ParkingLot> list = new ArrayList<>();
        while ((len = fr.read(arr)) != -1) {
            sb.append(arr, 0, len);
        }
        //读出文件内容
        System.out.println(sb);
        //分割出每一行
        String[] s = sb.toString().split("\r\n");
        //遍历s
        for (String ss : s) {
            String[] split = ss.split(",");
            ParkingLot parkingLot = new ParkingLot(split[0], split[1], split[2], split[3]);
            list.add(parkingLot);
        }
        //与输入的车牌号对比
        System.out.println("输入你的车牌号");
        Scanner scanner = new Scanner(System.in);
        String inputNum = scanner.nextLine();

        String Time = "";
        String nowTime = "";
        //在CarInfo.txt中查找该车牌号的进场时间,计算总共停车时间
        for (ParkingLot p : list) {
            if (p.getNum().equals(inputNum)) {
                nowTime = System.currentTimeMillis() + "";
                Time = p.getTime();
            }
        }
        
        long duration = (Long.parseLong(nowTime) - Long.parseLong(Time)) / 1000 / 60;

        //调用方法,计算停车费
        computeCost(duration);
        fr.close();
    }

    //计算停车费
    public static void computeCost(long time) {
        if (time <= 30) {
            System.out.println("30分钟以内免费!,您停车了" + time + "分钟");
        } else if (time < 60) {
            System.out.println("您停车了" + time + "分钟,不足一小时,大于30分钟,收费5元");
        } else {
            long count = time / 60 + 1;
            System.out.println("超过一小时每小时5元收费:" + count * 5 + "元,您停车了" + time + "分钟");
        }
    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        for (; ; ) {
            System.out.println("请输入进场还是出场,0退出");
            String input = sc.nextLine();
            switch (input) {
                case "进场":
                    enter();
                    break;
                case "出场":
                    exit();
                    break;
                case "0":
                    System.exit(0);
                default:
                    System.out.println("输入不正确!,请重新输入");
                    break;
            }
        }
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值