利用异常的相关知识对原租车代码进行了改进,现在可以处理各种异常状态,直到输入正确的结果。

入口程序没有进行大的修改,只是做了处理,将一些内容移植到别的地方,使这一部分的内容更加简洁

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

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

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

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

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+"吨";

}

}

java 6的代号是,Java入门第二季6.1问题编码Plus版相关推荐

  1. java二嗨租车项目_Java入门第二季6-1租车项目代码

    一共有5个类 Car类 //作为父类 package com.imooc; public class Car { public int ID; public String name; public i ...

  2. JAVA入门第二季 第一章 类和对象

    面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...

  3. java集合租车_Java入门第二季 租车系统

    二.代码实现: (1)基础版(控制台调试): car类: package com.xiaoyao.car; import java.util.List; public class Car{ priva ...

  4. java入门就是死敲代码吗_JAVA入门第二季综合练习(直接思考敲的代码,面向过程,不好)...

    package com.imocc; /* @author ndh 2016年3月27日 21:03:02 */ import java.util.Scanner; public class DiDi ...

  5. java 入门 第二季3

    1.继承 1.java是单继承的,一个子类只有一个父类 父类,基类 子类,派生类 2.继承的好处:子类拥有父类的所有属性和方法,属性的修饰符不能是private 3.语法规则: class 子类 ex ...

  6. java二嗨租车项目_Java入门第二季第六章项目实战(租车系统)

    新手,望指教. package test; public class CarInfo { private int pNum; private String type; private String n ...

  7. java入门第二季--面向对象实现人类说话,中国人说汉语,美国人说英语

    人类说话,中国人说汉语,美国人说英语 继承实现 /javaDemo6/src/com/imooc/Person.java package com.imooc;public class Person { ...

  8. 慕课网-Java入门第二季实战练习-答答租车系统下载

    更具所学知识,编写一个控制台版的"答答租车系统" 功能: 1.展示所有可租车辆 2.选择车型.租车量 3.展示租车清单,包含:总金额.总载货量及其车型.总载人量及其车型 代码下载地 ...

  9. Java面向对像小项目 慕课网Java入门第二季滴滴租车系统

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  10. java二嗨租车项目_Java入门第二季6-1租车项目

    1.Car类 package imooc; public class Car { public int ID; public String nameString; public int rent; p ...

最新文章

  1. linux shell 数组元素带空格,在bash中解析带有空格的JSON数组
  2. 开发日记-20190709 关键词 读书笔记 《Perl语言入门》Day 6
  3. 杭州成都场「PPT 下载」新鲜出炉 | 神策 2019 数据驱动大会
  4. c++动态内存的几个简单例子
  5. C# 读取文件内容/输出txt log
  6. macbook数据线连接手机_MacBook可以为iPhone进行快充吗?用MacBook为iPhone充电好不好?...
  7. localStorage sessionStorage 和cookie等前端存储方式总结
  8. 看咒语,知情节?他们用《哈利·波特》让AI学习剧透
  9. 常用JS验证函数总结
  10. VC开发数据库基础之ADO篇
  11. PHP统计订单表,订单售后表金额
  12. PCB设计中的3W原则
  13. StataIC——线性回归计算个股的β值
  14. 初探BP神经网络工具箱
  15. close函数 qt_QT中的close、closeEvent和析构函数的理解(基础知识)
  16. SkyWalking8.4监控跨线程问题解决
  17. 2022年全球与中国环己胺市场现状及未来发展趋势
  18. 天道不一定酬勤,深度思考比勤奋工作更重要
  19. 第二课、《抓包学习——美团评论》
  20. PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)...

热门文章

  1. 留言板分页php,php留言板代码[经典的分页代码](1/4)
  2. VSCode:vscode设置侧边资源管理器文字大小
  3. QQ模拟自动登录实现
  4. opencv摄像头拍摄视频并保存方法
  5. 2020,我的年终总结(附优惠券)
  6. 重磅直播|结构光3D相机光机核心技术及3D成像性能分析
  7. LeetCode之寻找峰值
  8. 04.如何升级扩展以支持Visual Studio 2019
  9. Java事件的垃圾回收机制和跳出多重循环
  10. SqlServer 的一个坑