2022java考试题答案

五、

我的是mac系统,如果是win文件名需要更改

package com.gemxhq;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;

public class Q5File {
    // 不要忘记抛出异常
    public static void main(String[] args) throws IOException {
        File f = new File("sample.txt");
        if (!f.exists()) {
            System.out.println("sample.txt file is not exists.");
            System.exit(1);
        }

        // 统计文件大小超过100000KB的文件个数
        int count = 0;
        // 使用hashmap来存储不同格式文件的数量
        HashMap<String, Integer> hm = new HashMap<>();

        // 加载文件流
        Scanner r = new Scanner(f);
        // 每一行数据
        while (r.hasNext()) {
            // 每一项数据
            String date = r.next();
            String time = r.next();
            long size = r.nextLong();
            String title = r.next();

            // 获取文件后缀名。切记要加斜杠\\转义,不然无效
            String postfix= title.split("\\.")[1].toLowerCase();
            // 统计相应格式文件数量
            if (hm.containsKey(postfix)) {
                hm.put(postfix, hm.get(postfix) + 1);
            }else {
                hm.put(postfix, 1);
            }

            // 计算100000KB大小的文件个数
            if (size > 100000) count++;

        }

        // 显示不同格式文件的数量
        Iterator<String> iterator = hm.keySet().iterator();
        while (iterator.hasNext()) {
            String filetype = iterator.next();
            System.out.println("filetype:" + filetype + ",count:" + hm.get(filetype));
        }
        // 显示文件大小超过100000KB
        System.out.println("文件大小超过100000KB的文件个数:" + count);
    }
}

六、

设计类的结构
在这里插入图片描述

在这里插入图片描述

Vehicle:

// 定义抽象类
public abstract class Vehicle {
    // 收费单价
    int price;
    // 收费总额
    abstract int fee(int hour);
}

Bus:

/**
 * 客车
 */
// 类实现继承
public class Bus extends Vehicle {
    int price = 15;
    @Override
    int fee(int hour) {
        return this.price * hour;
    }
}

Truck:

/**
 * 货车
 */
public class Truck extends Vehicle {

    int price = 12;
    @Override
    int fee(int hour) {
        return this.price * hour;
    }
}

Car:

/**
 * 轿车
 */
public class Car extends Vehicle{

    int price = 3;
    @Override
    int fee(int hour) {
        return this.price * hour;
    }
}

测试类Parker:

import java.util.Scanner;

public class Parker {
    // 方法体现封装
    public int chargeFees() {
        System.out.println("请输入您的车辆类型:1.客车(15r/hour) 2.货车(12r/hour) 3.轿车(3r/hour)");
        Scanner scan = new Scanner(System.in);
        int type = scan.nextInt();
        System.out.println("停车时间是:(hour)");
        int hour = scan.nextInt();

        // 多态的体现
        Vehicle vehicle = null;
        switch (type) {
            case 1:
                vehicle = new Bus();
                // break切记不要少
                break;
            case 2:
                vehicle = new Truck();
                break;
            case 3:
                vehicle = new Car();
                break;
        }
        int fees = vehicle.fee(hour);
        System.out.println("收取费用为:" + fees);
        return fees;
    }

    public static void main(String[] args) {
        // 匿名对象,因为我们只需要知道费用
        int fees = new Parker().chargeFees();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值