1.父类Car
public abstract class Car {
public String name;
public int price;
public int goodCap;
public int manCap;
public Car(String name,int price){//构造方法
this.name=name;
this.price=price;
}
}
抽象类,约束子类必须包含构造方法。
构造方法,让该类实例化的时候执行哪些方法,初始化哪些属性。
2.子类ManCar
public class ManCar extends Car {
public ManCar(String name, int price,int manCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.manCap=manCap;
}
public String toString(){
return(name+"\t\t"+price+"元/日"+"\t\t载客:"+manCap+"人\t");
}
}
重写构造方法,构造时必须传入字符串name,整型int,整型manCap;
重写toString方法,返还 name price元/日 载客manCap人 。
3.GoodsCar
public class GoodsCar extends Car {
public GoodsCar(String name, int price,int goodCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.goodCap=goodCap;
}
public String toString(){
return (name+"\t\t"+price+"元/日"+"\t\t载货:"+manCap+"吨\t");
}
}
同2.
4.MGCar
public class MGCar extends Car {
public MGCar(String name, int price,int goodCap,int manCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.manCap=manCap;
this.goodCap=goodCap;
}
public String toString(){
return(name+"\t\t"+price+"元/日"+"\t\t载客:"+manCap+"人"+"\t载货:"+goodCap+"吨");
}
}
同2.
5.Initial
import java.util.Arrays;
import java.util.Scanner;
public class Initial {
public static void main(String[] args) {
// TODO Auto-generated method stub
int first = 0;//首次
int[] rentNum = new int[100];//租车代码
int rentDays = 0;//租车天数
Car[] cars = {new ManCar("上海大众", 150, 5),new ManCar("雪佛兰", 210, 4),new GoodsCar("货车1", 100, 20),new MGCar("长城皮卡", 80, 5, 4)};
if(first==0){
System.out.println("~~欢迎使用达达租车系统~~");
}
while(first==0){
System.out.println("是否想要租车:\n"+"是:1\t"+"否:0");
Scanner input = new Scanner(System.in);
String str=input.next();
if("1".equals(str)||"0".equals(str)){
if("1".equals(str)){
showCarInfo(cars);
first++;
select(input, cars, rentNum);
Arrays.sort(rentNum);//排序,100个元素,其他都是零,租的车序号被排到最后。
System.out.println("请输入租赁天数:");
while(first==1){
first++;
try{
rentDays=input.nextInt();
}catch(Exception e){
System.out.println("你输入的信息有误,请重输:");
input.next();
first=1;
}
}
printList(rentNum,cars,rentDays);
}else{
System.out.println("感谢你的使用,欢迎下次使用");
input.close();
return;
}
}else {
System.out.println("你的输入有误,请重新输入");
first=0;
}
}
}
private static void showCarInfo(Car[] cars){
System.out.println("可租赁汽车价目表:\n序号\t汽车名称\t\t价格\t\t容量");
for(int i=0;i<cars.length;i++){
System.out.println(i+1+"\t"+cars[i].toString());
}
}
private static void select(Scanner input,Car[] cars,int[] rentNum){
int first=0;
int num = 0;
if(first==0){
System.out.println("请输入你要租车的数量:");
}
try {
num=input.nextInt();
first++;
} catch (Exception e) {
System.out.println("你输入的数量信息错误,请重输:");
first=0;
select(input,cars,rentNum);
}
System.out.println("请输入你要选的车的编号:");
int selNum;
for(int i=0;i<num;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号:");
try {
selNum=input.nextInt();
if(selNum>cars.length||selNum<=0){
System.out.println("输入有误,请重新输入:");
i--;
continue;
}
rentNum[i]=selNum;
} catch (Exception e) {
System.out.println("你输入的数量信息错误,请重输:");
i--;
input.next();
}
}
}
private static void printList(int[] rentNum, Car[] cars, int rentDays) {
int sumPrice=0;
int mancapSum=0;
int goodscapSum=0;
int selNum=0;
int[] count=new int[cars.length];
System.out.println("序号\t\t汽车名称\t\t租金\t\t容量\t\t\t数量");
int i=0;
for(int r=0;r<rentNum.length;r++){
selNum=rentNum[r]-1;//rentNum数组100元素从头遍历,基本都是0,选择的车序号排升序在最后,0-1=-1.
if(selNum!=-1){//代表车序号-1
i++;
sumPrice+=cars[selNum].price;//通过车在数组中的位置,取价格
if(cars[selNum] instanceof ManCar){//判断是否是ManCar的实例化对象
mancapSum+=cars[selNum].manCap;
}else if (cars[selNum] instanceof GoodsCar) {
goodscapSum+=cars[selNum].goodCap;
}else {
goodscapSum+=cars[selNum].goodCap;
mancapSum+=cars[selNum].manCap;
}
if(r<rentNum.length-1 && rentNum[r] == rentNum[r+1]){//r<99 && 此元素与下一个元素相同,0
count[selNum]++; //数量+1
i--; //行数-1,因为数量在同一行叠加
continue;
}
System.out.println(i+"\t\t"+cars[selNum]+"\t\t"+(count[selNum]+1));
}
}
System.out.println("总载人:"+mancapSum+"人/日\t总载货:"+goodscapSum+"吨/日\t总金额:"+sumPrice*rentDays);
}
}
共同学习,写下你的评论
评论加载中...
作者其他优质文章