为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第二季6.1问题编码

标签:
Java

这里主要设计了三块程序:测试程序,租车系统以及汽车类。
汽车类对象作为租车系统的属性。
程序中没有使用接口,因为在这个问题中汽车类属性较多,而基本没有什么方法,所以我只使用了继承。
另外没有对意外情况的处理,比如租车数量<1或者>6等等,这样主干会看的更清楚些,当然也不排除是因为我比较懒。
意外情况处理的程序我也做了一个,用到了异常的相关知识,有兴趣的可以看一下:Java入门第二季6.1问题编码Plus版
先放测试程序

import java.util.Scanner;
public class  TestRent
{
    public static void main(String[] args) 
    {
        Scanner in=new Scanner(System.in);
        System.out.println("欢迎使用答答租车系统:");
        System.out.println("您是否要租车:1是 0否");
        if(in.nextInt()==1){
            CarRent cr=new CarRent();
            cr.initial();//存储车辆信息
            cr.showCar();//展示车辆信息
            System.out.println("请输入您要租汽车的数量:");
            cr.rentCar(in.nextInt());//调用租车程序
        }
        System.out.println("谢谢使用!");
    }
}

下边是父类,既可以载重也可以载人,这个很简单,都可以看明白,我就不注释了

class Car
{
    public int id;//编号
    public int seat;//载人数
    public int load;//载重数
    public int price;//价格
    public String name;//名称
    Car(int id, String name, int price, int seat, int load){
        this.id=id;
        this.seat=seat;
        this.load=load;
        this.price=price;
        this.name=name;
    }
//覆盖Object.toString(),这是为了展示信息时使用
    public String toString(){
        return id+".\t"+name+"\t"+price+"元/天\t载人:"
        +seat+"人 载货:"+load+"吨";
    }
}

只载人的车,重写了父类的toString方法,同时,载重设为0

class SeatCar extends Car
{
    SeatCar(int id, String name, int price, int seat){
        super(id, name, price, seat, 0);
    }
    public String toString(){
        return id+".\t"+name+"\t"+price+"元/天\t载人:"
        +seat+"人";
    }
}

只载重的车,重写toString方法,载人为0

class LoadCar extends Car
{
    LoadCar(int id, String name, int price, int load){
        super(id, name, price, 0, load);
    }
    public String toString(){
        return id+".\t"+name+"\t"+price+"元/天\t载货:"
        +load+"吨";
    }
}

最后是租车系统,这个内容要多一些

class CarRent
{
    private Car[] car=new Car[6];
//初始化车辆信息,这里利用了多态,初始化根据对象有所不同
    void initial(){
        car[0]=new SeatCar(1,"奥迪A4",500,4);//载人类
        car[1]=new SeatCar(2,"马自达6",400,4);
        car[2]=new Car(3,"皮卡雪6",450,4,2);//载人载重类
        car[3]=new SeatCar(4,"金龙",800,20);
        car[4]=new LoadCar(5,"松花江",400,4);//载重类
        car[5]=new LoadCar(6,"依维柯",1000,20);
    }
//展示车辆信息
    void showCar(){
        System.out.println("您可租车的类型及其价目表:");
        System.out.println("序号\t汽车名称\t租金\t容量");
//利用foreach输出车辆信息
        for(Car c:car)
            System.out.println(c);//这里会自动调用toString()方法,多态的意义主要再这里体现
    }
//展示载人车辆信息,并计算载人数
    void seatCar(int[] nums){//传入所有被选中的车辆
        int tseat=0;//计算总载人数
        System.out.println("***可载人的车有:");
        for(int i=0;i<nums.length;i++){
            if(car[nums[i]].seat==0)continue;//载人为0,则跳过本次循环
            System.out.print(car[nums[i]].name+"\t");
            tseat+=car[nums[i]].seat;
        }
        System.out.println("共载人:"+tseat+"人");
    }
//这是展示载重车辆,并计算总载重
    void loadCar(int[] nums){//传入所有选中车辆
        int tload=0;//计算总载重
        System.out.println("***可载货的车有:");
        for(int i=0;i<nums.length;i++){
            if(car[nums[i]].load==0)continue;//载重为0,则跳过本次循环
            System.out.print(car[nums[i]].name+"\t");
            tload+=car[nums[i]].load;
        }
        System.out.println("共载货:"+tload+"吨");
    }
//计算租金
    void getMoney(int day, int[] nums){//传入租期,选中车辆
        int money=0;
        for(int i=0;i<nums.length;i++){
            money+=car[nums[i]].price;
        }
        System.out.println("***租车总价格:"+(money*day)+"元");
    }
//选择车辆
    void rentCar(int num){
        int[] nums=new int[num];
        Scanner in=new Scanner(System.in);
        for(int i=0;i<num;i++){
            System.out.println("请输入第"+(i+1)+"辆车的序号:");
            nums[i]=in.nextInt()-1;//车辆序号-1就是对应车辆的数组下标
        }
        System.out.println("请输入租车天数:");
        int day=in.nextInt();

        System.out.println("您的帐单:");
        seatCar(nums);
        loadCar(nums);
        getMoney(day,nums);
    }
}
点击查看更多内容
180人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消