利用异常的相关知识对原租车代码进行了改进,现在可以处理各种异常状态,直到输入正确的结果。
入口程序没有进行大的修改,只是做了处理,将一些内容移植到别的地方,使这一部分的内容更加简洁
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人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦