花了好长时间才做出来,求大神指教有什么不对的或者可以优化的地方
一开始看到不止的题目没有头绪,参照了前辈们的答案才做出来,修修改改了好久总算达成了跟课程老师的题目差不多的要求,和自己加的一些交互代码。
帮小弟提下意见或者建议 谢谢啦
package com.imooc; /*车 父类*/ public class Car { protected String carName; //车名 protected int money; //价格 protected int seatNum; //座位数 protected double weigthNum; //载货量 直接用了double类型 private double toMoney=0; //总价格 private int toSeat=0; //总座位 private int toWeigth=0; //总载重 private int day=1; //租车天数 public Car(String newCarName,int newMoney,int newSeatNum,double NewWeigthNum) { this.carName=newCarName; this.money=newMoney; this.seatNum=newSeatNum; this.weigthNum=NewWeigthNum; } public Car() { } public String getCarName() { return carName; } public int getMoney() { return money; } public int getSeatNum() { return seatNum; } public double getWeigthNum() { return weigthNum; } public double getToMoney() { return toMoney; } public int getToSeat() { return toSeat; } public int getToWeigth() { return toWeigth; } public int getDay() { return day; } public void show() { if(weigthNum<=0) { System.out.println("\t"+carName+"\t"+money+"元/天\t载人:"+seatNum+"人"); } else if(seatNum<=0) { System.out.println("\t"+carName+"\t"+money+"元/天\t载货:"+weigthNum+"吨"); }else { System.out.println("\t"+carName+"\t"+money+"元/天\t载人:"+seatNum+"人 载货:"+weigthNum+"吨"); } } }
package com.imooc; /*客车 子类*/ public class PassCar extends Car { public PassCar(String newCarName,int newMoney,int newSeatNum){ super.carName=newCarName; super.money=newMoney; super.seatNum=newSeatNum; } }
package com.imooc; /*皮卡车 子类*/ public class PickupCar extends Car { public PickupCar(String newCarName,int newMoney,int newSeatNum,double weigthNum){ super.carName=newCarName; super.money=newMoney; super.seatNum=newSeatNum; super.weigthNum=weigthNum; } }
package com.imooc; /*货车 子类*/ public class TruckCar extends Car { public TruckCar(String newCarName,int newMoney,double weigthNum){ super.carName=newCarName; super.money=newMoney; super.weigthNum=weigthNum; } }
package com.imooc;
import java.util.*;
/*运行类*/
public class Initail {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("***欢迎使用答答租车系统***");
System.out.println("您是否要租车?输入数字\t1是,2否"); //判断是否要租车
Car carVa=new Car();
int toSeat=carVa.getToSeat(); //定义车总座位数
double toWeigth=carVa.getWeigthNum(); //定义值车总载重数
double toMoney=carVa.getMoney(); //定义总价格
int day=carVa.getDay();
int carType=0; //定义选择的车序号
int maxC=999; //定义最大租车数量
for(int tf=3;tf>=0;tf--) {
int confirmInt=input.nextInt(); //输入数字判断是否要租车
if(confirmInt==1) {
tf=-1; //结束外层租车需求循环判断 18行
Car car[]={
new PassCar("奥迪A4",500,4),
new PassCar("马自达6",400,4),
new PassCar("金龙",800,20),
new PickupCar("皮卡雪6",450,4,2),
new TruckCar("松花江",400,4),
new TruckCar("依维柯",1000,20),
};
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t"+"容量");
for(int c=0,d=1;c<car.length;c++,d++) { //显示租车列表
System.out.print(d+".");
car[c].show();
}
int carNum=3; //定义租车数量
System.out.println("请输入您要租车的数量");
for(int tfNum=3;tfNum>=0;tfNum--) { //循环最大租车数量
carNum=input.nextInt();
String carN[]=new String[carNum]; //定义数组,保存选择后的车辆-车名
int carS[]=new int[carNum]; //定义数组,保存选择后的车辆-座位数
double carW[]=new double[carNum]; //定义数组,保存选择后的车辆-载重数
List<String> listS = new ArrayList<String>();
List<String> listW = new ArrayList<String>();
if(carNum>0&&carNum<=maxC) { //判断租车数量.小于max=999, 进入选车循环
tfNum=-1;
for(int i=1,tfNo=3;i<=carNum;) {
System.out.println("请输入第"+i+"辆车的序号,输入"+"[ 0 ]"+"直接进入下一步租车天数界面");
carType=input.nextInt(); //选择车序号
if(carType<=car.length&&carType>0) { //如果输入的车序号小于车辆数据总长度
tfNo=3;
toMoney=toMoney+car[carType-1].getMoney(); //计算总价格
toSeat=toSeat+car[carType-1].getSeatNum(); //计算总座位/载人数
toWeigth=toWeigth+car[carType-1].getWeigthNum(); //计算总载重数
carS[i-1]=car[carType-1].getSeatNum(); //保存我们选择的车座位数为数组
carW[i-1]=car[carType-1].getWeigthNum();//保存我们选择的车载重为数组
carN[i-1]=car[carType-1].getCarName(); //保存我们选择的车名为数组
i++;
if(i<carNum) {
//显示租车列表
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t"+"容量");
for(int c=0,d=1;c<car.length;c++,d++) {
System.out.print(d+".");
car[c].show();
}
}
}
else {
if(tfNo>0&&carType!=0) {
//显示租车列表
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t"+"容量");
for(int c=0,d=1;c<car.length;c++,d++) {
System.out.print(d+".");
car[c].show();
}
System.out.println();
System.out.println("输入错误!此序号的车辆不存在,还可输入"+tfNo+"次。");
tfNo--;
}
else if(tfNo<=0) {
System.out.println("输入的租车数量,错误次数已达3次,退出租车界面");
break;
}
}
//判断车辆完选择之后
if(i>carNum||carType==0) {
System.out.println("请输入租车天数:");
day=input.nextInt();
if(day>0) { //判断租车天数
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
for(int s=0;s<carN.length;s++) {
if(!listS.contains(carN[s])) { //判断重复值
if(carS[s]>0) { //判断座位数大于0
listS.add(carN[s]); //加到list
}
}
}
System.out.print(listS); //输出去重复值后的车
if(toSeat<=0) { //判断有没有选择客车
System.out.println("无");
}else {
System.out.println("\t总载人:"+toSeat+"人");
}
System.out.println("***可载货的车有:");
for(int w=0;w<carN.length;w++) {
if(!listW.contains(carN[w])) { //判断重复值
if(carW[w]>0) { //判断座位数大于0
listW.add(carN[w]); //加到list
}
}
}
System.out.print(listW); //输出 去重复值 后的车
if(toWeigth<=0) { //判断有没有选择货车
System.out.println("无");
}else {
System.out.println("\t总载货:"+toWeigth+"吨");
}
System.out.println("租车总价格:"+toMoney*day+"元");
}else {
int tfDay=3;
System.out.println("租车天数错误,请重新输入:");
while(tfDay>=0) {
day=input.nextInt();
tfDay--;
}
if(tfDay<=0) {
System.out.println("输入租车天数错误次数已达最大值,默认给您选择租车天数为1天");
day=1;
}
}
if(carType==0) {
break;
}
}
}
}
else{
if(tfNum>0) {
System.out.println("输入错误!租车数量需要在1-"+maxC+"之间,还可输入"+tfNum+"次。");
System.out.println("请重新输入租车数量:");
}
else if(tfNum<=0) {
System.out.println("输入的租车数量,错误次数已达3次,退出租车界面");
break;
}
}
}
}
else if(confirmInt==2) {
System.out.println("您选择了否,感谢使用!");
break;
}
else if(confirmInt!=1||confirmInt!=2){
if(tf>0) {
System.out.println("输入错误!还可输入"+tf+"次。");
System.out.println("输入数字选择您是否要租车? 1是,2否");
}
else if(tf<=0) {
System.out.println("输入需求错误次数已到达3次,退出租车界面。");
}
}
}
}
}