测试类
import java.util.Scanner; public class Play { public static void main(String[] args) { Car car1 = new Truck("货车1号", 100, 4); Car car2 = new Truck("货车2号", 200, 15); Car car3 = new MannedCar("客车1号", 300, 15); Car car4 = new MannedCar("客车2号", 400, 4); Car car5 = new PickupTruck("皮卡车1号", 400, 2,4); Car car6 = new PickupTruck("皮卡车2号", 500, 3,2); Car[] cars = new Car[6]; cars[0] = car1; cars[1] = car2; cars[2] = car3; cars[3] = car4; cars[4] = car5; cars[5] = car6; System.out.println("欢迎使用嗒嗒租车系统:"); System.out.println("您是否要租车:1是 0否"); Scanner scanner = new Scanner ( System.in ); int yes_no = scanner.nextInt (); if (yes_no == 1) { System.out.println ( "您可以租车的类型及价目表:" ); System.out.println ( "序号 名称 租金 容量" ); for (int i = 0; i < cars.length; i++) { System.out.print ( i + 1 + ". " ); cars[i].show (); } //eg1.foreeach遍历 /*for (Car car : cars) { car.show (); }*/ //eg2.while遍历 /*int i = 0; while(i<cars.length){ cars[i].show(); i++; }*/ System.out.print ( "请输入您要租汽车的数量: " ); int lease = scanner.nextInt (); //生成储存租借汽车的数组 Car[] zcar = new Car[lease];//zcar数组长度取决于用户输入的lease变量值 for (int n = 1; n < lease + 1; n++) { System.out.print ( "请输入第" + n + "车的序列号: " ); int serial = scanner.nextInt (); zcar[n-1] = cars[serial-1];//把cars数组中[serial-1]传入zcar数组中[n-1]去 } //测试zcar(租借车辆数组) /*for (int i = 0; i<lease; i++){ zcar[i].show (); }*/ //day变量存储输入天数 System.out.print ( "请输入租车的天数: " ); int day = scanner.nextInt (); //遍历筛选载人汽车 System.out.println ("***可载人的汽车有: "); for (int i = 0; i<lease; i++){ if (zcar[i].manned != 0){ System.out.print (zcar[i].name + " "); } } //遍历筛选载货汽车 System.out.println (); System.out.println ("***可载货的汽车有: "); for (int i = 0; i<lease; i++){ if (zcar[i].goods != 0){ System.out.print (zcar[i].name + " "); } } //计算总价格 System.out.println (); System.out.println ("***租车总价格为: "); int moneny = 0; for (int i = 0; i<lease;i++){ moneny += zcar[i].price * day; } System.out.println (moneny + "元"); }else { System.out.println ("好的,再见"); System.exit ( 0 ); } } }
Car类(父类)
public class Car { public String name; public int price; public int goods; public int manned; public void show(){ } }
Truck类(子类)
public class Truck extends Car{ //private int goods; public Truck(String newName,int newPrice,int newgoods){ name = newName; price = newPrice; goods = newgoods; } public void show(){ System.out.println ( name + " " + price + "元/天 " +"载货:" + goods + "吨" ); } //没用的 /*public int getGoods() { return goods; } public void setGoods(int goods) { this.goods = goods; }*/ }
MannedCar类(子类)
public class MannedCar extends Car{ //private int manned; public MannedCar(String newName,int newPrice,int newManned){ name = newName; price = newPrice; manned = newManned; } public void show(){ System.out.println ( name + " " + price + "元/天 " +"载人:" + manned + "人" ); } public int getManned() { return manned; } public void setManned(int manned) { this.manned = manned; } }
PickupTruck类(子类)
public class PickupTruck extends Car{ //private int goods; //private int manned; public PickupTruck(String newName,int newPrice,int newGoods,int newManned){ name = newName; price = newPrice; goods = newGoods; manned = newManned; } public void show(){ System.out.println ( name + " " + price + "元/天 " +"载人:" + manned + "人" + " 载货:" + goods + "吨"); } //没用的 /*public int getGoods() { return goods; } public int getManned() { return manned; } public void setGoods(int goods) { this.goods = goods; } public void setManned(int manned) { this.manned = manned; }*/ }
这个abstract类到底怎么用,改来改去都不行,还有其他的地方有没有什么错误哈,互相交流交流
注意要体现程序的持续性,程序需要一直运行,不是说一个客人交易完后就结束了,还要让程序继续下去,这时候需要在main里面使用while(){},把代码都写进while()里。
我的代码 用到了abstract类和接口 供你参考
public interface IZaiRen {
}
public interface IZaiHuo {
void zaiHuo();
}
public interface IDouZai extends IZaiHuo, IZaiRen {
}
public abstract class Car {
public int number;
public String carName;
public int price;
public String carType ;
public abstract void print();
}
public class PersonCar extends Car implements IZaiRen {
public int capacityPerson;
public PersonCar(int number,String carName,int price,int capacityPerson) {
this.number=number;
this.carName=carName;
this.price=price;
this.capacityPerson=capacityPerson;
carType = "PersonCar";
}
public void zaiRen() {
System.out.print(" 载人:"+capacityPerson+"人 ");
}
public void print() {
System.out.print(number+". "+carName+" "+price+"元/天 ");
this.zaiRen();
}
}
public class StuffCar extends Car implements IZaiHuo {
public int capacityStuff;
public StuffCar(int number,String carName,int price,int capacityStuff) {
this.number=number;
this.carName=carName;
this.price=price;
this.capacityStuff=capacityStuff;
carType = "StuffCar";
}
public void zaiHuo() {
System.out.print(" 载货:"+capacityStuff+"吨 ");
}
public void print() {
System.out.print(number+". "+carName+" "+price+"元/天 ");
this.zaiHuo();;
}
}
public class PersonStuffCar extends Car implements IDouZai {
public int capacityPerson;
public int capacityStuff;
public PersonStuffCar(int number,String carName,int price,int capacityPerson,int capacityStuff) {
this.number=number;
this.carName=carName;
this.price=price;
this.capacityPerson=capacityPerson;
this.capacityStuff=capacityStuff;
carType = "PersonStuffCar";
}
public void zaiRen() {
System.out.print(" 载人:"+capacityPerson+"人 ");
}
public void zaiHuo() {
System.out.print(" 载货:"+capacityStuff+"吨 ");
}
public void print() {
System.out.print(number+". "+carName+" "+price+"元/天 ");
this.zaiRen();
this.zaiHuo();
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("欢迎使用答答租车系统:");
System.out.println("您是否要租车:1是 0否");
Scanner scanner = new Scanner(System.in);
int sellect = scanner.nextInt();
if (sellect==0)
return;
int totalPersonC = 0;
int totalStuffC = 0;
int totalPrice = 0;
int pCarNum=0;
int sCarNum=0;
System.out.println("您可租车的类型及其价目表:");
System.out.println("序号 汽车名称 租金 容量");
Car cars[] =new Car[6];
String pcars[]=new String[6];
String scars[]=new String[6];
cars[0]=new PersonCar(1,"奥迪A4",500,4);
cars[1]=new PersonCar(2,"马自达6",400,4);
cars[2]=new PersonStuffCar(3,"皮卡雪 ",450,4,2);
cars[3]=new PersonCar(4,"金龙 ",800,20);
cars[4]=new StuffCar(5,"松花江 ",400,4);
cars[5]=new StuffCar(6,"依维柯 ",1000,20);
for(Car a : cars) {
a.print();
System.out.println("");
//System.out.print(a instanceof PersonCar);
//System.out.print(a instanceof StuffCar);
//System.out.print(a instanceof PersonStuffCar);
}
System.out.println("请输入您要租汽车的数量");
int num=scanner.nextInt();
for (int i=1;i<=num;i++) {
System.out.println("请输入第"+i+"量车的序号");
int n = scanner.nextInt();
totalPrice+=cars[n-1].price;
switch (cars[n-1].carType) {
case "PersonCar":pCarNum+=1;
pcars[pCarNum]=cars[n-1].carName;
totalPersonC+=((PersonCar)cars[n-1]).capacityPerson;
break;
case "StuffCar":sCarNum+=1;
scars[sCarNum]=cars[n-1].carName;
totalStuffC+=((StuffCar)cars[n-1]).capacityStuff;
break;
case "PersonStuffCar":
pCarNum+=1;
pcars[pCarNum]=cars[n-1].carName;
totalPersonC+=((PersonStuffCar)cars[n-1]).capacityPerson;
sCarNum+=1;
scars[sCarNum]=cars[n-1].carName;
totalStuffC+=((PersonStuffCar)cars[n-1]).capacityStuff;
}
}
System.out.println("请输入租车天数:");
totalPrice*=scanner.nextInt();
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
for (String s:pcars) {
if(s!=null)
System.out.print(s+" ");
}
System.out.println("共载人:"+totalPersonC+"人");
System.out.println("***可载货的车有:");
for (String s:scars) {
if(s!=null)
System.out.print(s+" ");
}
System.out.println("共载货:"+totalStuffC+"吨");
System.out.println("***租车总价格:"+totalPrice+"元");
}
}