以下星号是为了慕友方便看
************************************************汽车父类****************************************************
package dadarentcar;
public abstract class Car {//汽车的父类
//父类拥有的属性
String name;//汽车姓名
double price;//汽车租赁价格
int busLoad;
int truckLoading;
public String getName() {//封装后获取修改属性的方法
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getBusLoad() {
return busLoad;
}
public void setBusLoad(int busLoad) {
this.busLoad = busLoad;
}
public int getTruckLoading() {
return truckLoading;
}
public void setTruckLoading(int truckLoading) {
this.truckLoading = truckLoading;
}
public abstract void showInfo();//抽象方法 子类会重写,展示 车名、价格、载货量或载客量
}
以下星号是为了慕友方便看
************************************************载客汽车类***************************************************
package dadarentcar;
public class Bus extends Car{
int busLoad;//载客量
public Bus(String name,double price,int busLoad){
this.name=name;
this.price=price;
this.busLoad=busLoad;
}
public int getBusLoad() {//封装后的获取和修改方法
return busLoad;
}
public void setBusload(int busLoad) {
this.busLoad = busLoad;
}
@Override
public void showInfo() {//重写父类showInfo方法
// TODO Auto-generated method stub
System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getBusLoad()+"人");
}
}
以下星号是为了慕友方便看
************************************************皮卡汽车类***************************************************
package dadarentcar;
public class Pickup extends Car {
int busLoad;//皮卡载客量
int truckLoading;//皮卡载货量
public Pickup(String name,double price,int busLoad,int truckLoading){//Pickup的构造方法
this.name=name;
this.price=price;
this.busLoad=busLoad;
this.truckLoading=truckLoading;
}
public int getBusLoad() {//封装后的获取和修改属性方法
return busLoad;
}
public void setBusLoad(int busLoad) {
this.busLoad = busLoad;
}
public int getTruckLoading() {
return truckLoading;
}
public void setTruckLoading(int truckLoading) {
this.truckLoading = truckLoading;
}
@Override
public void showInfo() {//重写父类showInfo方法
// TODO Auto-generated method stub
System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getBusLoad()+"人\t"+getTruckLoading()+"吨");
}
}
以下星号是为了慕友方便看
************************************************载货汽车类***************************************************
package dadarentcar;
public class Truck extends Car {
int truckLoading;//货车载货量
public Truck(String name,double price,int truckLoading){//Truck的构造方法
this.name=name;
this.price=price;
this.truckLoading=truckLoading;
}
public int getTruckLoading() {//封装后获取或修改属性的方法
return truckLoading;
}
public void setTruckLoading(int truckLoading) {
this.truckLoading = truckLoading;
}
@Override
public void showInfo() {//重写父类showInfo方法
// TODO Auto-generated method stub
System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getTruckLoading()+"吨");
}
}
以下星号是为了慕友方便看
************************************************主函数类***************************************************
package dadarentcar;
import java.util.Scanner;//导入扫描仪
public class DaDa_Rent_Car{
public static void main(String[] ages){//主函数
//使用数组统一创建汽车对象得到汽车数组
Car[] carArray={new Bus("奥迪A4",500,4),new Bus("马自达6",400,4),new Pickup("皮卡雪6",450,4,2),new Bus("金龙",800,20),new Truck("松花江",400,4),new Truck("依维柯",1000,20)};
//询问用户是否需要租车
Scanner input=new Scanner(System.in);//创建Scanner对象
System.out.println("****欢迎来到答答租车,是否需要租车? 输入“1”租车,输入“0”退出。****");
//接受用户输入的答案
int answer=input.nextInt();
while(answer!=1&&answer!=0){//当用户输入除0和1以外的数时,进入循环,直到用户输入1和0跳出循环
System.out.println("****欢迎来到答答租车,是否需要租车? 输入“1”租车,输入“0”退出。****");
int answer1=input.nextInt();//新建一个局部变量answer1接受数据
if(answer1==1){//当用户输入1后跳出循环,并把值赋给answer
answer=answer1;
break;
}
if(answer1==0){//当用户输入0后跳出循环,并把值赋给answer
answer=answer1;
break;
}
}
//判断用户输入的数据,得出不同结果
if(answer==1){
System.out.println("进入系统******");
//打印出导航
System.out.println("序号"+"\t"+"车名"+"\t\t"+"价格"+"\t\t"+"载客/载货");
for(int i=0;i<carArray.length;i++){
System.out.print(i+1+"\t");
carArray[i].showInfo();
}
//询问用户需要租赁多少辆车
System.out.println("需要租多少辆车?******");
int rentNum=input.nextInt();//接受用户输入的数据
Car[] rentCar=new Car[rentNum];//创建需要租赁的车的数组,数组长度为用户输入需要租赁汽车的个数
for(int i=0;i<rentCar.length;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号");
int carNum=input.nextInt();
rentCar[i]=carArray[carNum-1];
}
//询问用户需要租赁多少天
System.out.println("需要租多少天?******");
int rentDay=input.nextInt();
//打印账单
System.out.println("******您的账单******");
int allBusLoad=0;//统计总载人量
int allTruckLoading=0;//统计总载货量
int allPrice=0;//统计总租金
System.out.println("您所租赁的车,可载人的车辆有:******");
for(int i=0;i<rentCar.length;i++){
if(rentCar[i] instanceof Bus||rentCar[i] instanceof Pickup){
rentCar[i].showInfo();
allBusLoad+=rentCar[i].getBusLoad();
}
}
System.out.println("您所租赁的车,可载货的车辆有:******");
for(int j=0;j<rentCar.length;j++){
if(rentCar[j] instanceof Truck||rentCar[j] instanceof Pickup){
rentCar[j].showInfo();
allTruckLoading+=rentCar[j].getTruckLoading();
}
allPrice+=rentCar[j].getPrice();
}
//总载客数、总价钱和总载货量
System.out.println("总载客数为:"+allBusLoad+"人");
System.out.println("总载货量为:"+allTruckLoading+"吨");
System.out.println("总租金为:"+(allPrice*rentDay)+"元");
}else if(answer==0){
System.out.println("********欢迎下次光临********");
}
}
}
1 回答
已采纳

天启之魂
TA贡献174条经验 获得超85个赞
大概看了一下 给几个小建议
1,用了set和get方法 属性就要加上private,当然不加也没错
2,car中不要定义 busLoad;和truckLoading;
3,一开始的确认用户是否需要租车这里写的有点绕。。。。可以简化一点
4, 直接将所有的功能全封装成函数,然后直接在main中调用,这样main更简洁,修改更方便
比如main中先创建车辆数组后,调用欢迎函数,然后调用打印信息的函数,然后调用要求用户输入租车信息的函数,之后调用打印租车结果的函数,over 整个main函数也就几行,逻辑清楚,简洁,易于修改。
后面代码没仔细看 不过既然你贴出来了应该运行是没什么问题的 。
添加回答
举报
0/150
提交
取消