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

Java入门第二季6.1问题编码Plus版

标签:
Java

利用异常的相关知识对原租车代码进行了改进,现在可以处理各种异常状态,直到输入正确的结果。
入口程序没有进行大的修改,只是做了处理,将一些内容移植到别的地方,使这一部分的内容更加简洁

import java.util.Scanner;
public class  TestRentPlus
{
    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();
            cr.rentCar();
        }
        System.out.println("谢谢使用!");
    }
}

下边是租车系统,在这里添加了异常的抛出与捕获,将整个系统更加细化,这样出现错误只会回到这一小块出错之前,比如:输入第二辆车的编号出错,则只会要求重新输入第二辆车的ID
另外一些需要经常使用的内容,我把他们转换为了类的属性,这样不用总是进行新建、传递

class CarRent
{
    private int num;
    private int id;
    private int day;
    private int[] nums=new int[6];
    private Scanner in=new Scanner(System.in);
    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容量");
        for(Car c:car)
            System.out.println(c);
    }
    void seatCar(){
        int tseat=0;
        System.out.println("***可载人的车有:");
        for(int i=0;i<num;i++){
            if(car[nums[i]].seat==0)continue;
            System.out.print(car[nums[i]].name+"\t");
            tseat+=car[nums[i]].seat;
        }
        System.out.println("共载人:"+tseat+"人");
    }
    void loadCar(){
        int tload=0;
        System.out.println("***可载货的车有:");
        for(int i=0;i<num;i++){
            if(car[nums[i]].load==0)continue;
            System.out.print(car[nums[i]].name+"\t");
            tload+=car[nums[i]].load;
        }
        System.out.println("共载货:"+tload+"吨");
    }
    void getMoney(){
        int money=0;
        for(int i=0;i<num;i++){
            money+=car[nums[i]].price;
        }
        System.out.println("***租车总价格:"+(money*day)+"元");
    }
    void getNum(){
        System.out.println("请输入您要租汽车的数量:");
        try{
            num=in.nextInt();
            if(num<1)throw new Exception();
        }catch(Exception e){
            System.out.println("请输入大于0的数字");
            in=new Scanner(System.in);
            getNum();
        }
    }
    void getId(int i){
        System.out.println("请输入第"+(i+1)+"辆车的序号:");
        try{
            id=in.nextInt()-1;
            if(id <0||id>5)throw new Exception();
        }catch(Exception e){
            System.out.println("请输入1~6之间的数字");
            in=new Scanner(System.in);
            getId(i);
        }
    }
    void getDay(){
        System.out.println("请输入租车天数:");
        try{
            day=in.nextInt();
            if(day<1)throw new Exception();
        }catch(Exception e){
            System.out.println("请输入大于0的数字");
            in=new Scanner(System.in);
            getDay();
        }
    }
    void rentCar(){
        getNum();

        for(int i=0;i<num;i++){
            getId(i);
            nums[i]=id;
        }

        getDay();

        System.out.println("您的帐单:");
        seatCar();
        loadCar();
        getMoney();
    }
}

车类没有进行修改,还是之前的内容

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;
    }
    public String toString(){
        return id+".\t"+name+"\t"+price+"元/天\t载人:"
        +seat+"人 载货:"+load+"吨";
    }
}
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+"人";
    }
}
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+"吨";
    }
}
点击查看更多内容
17人点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消