为了账号安全,请及时绑定邮箱和手机立即绑定

最后一节,在各位前辈的基础上加了查重和防止输入数据越界的情况

package dada;
import java.util.*;
public  class Test {
	
	
	public abstract class Car{

		private int carNum;
		private String carName;
		private int rentMoney;
		private int carCapacity;
		private int carCarryCargo;
		
		public int getCarNum() {
			return carNum;
		}
		public void setCarNum(int carNum) {
			this.carNum = carNum;
		}
		public String getCarName() {
			return carName;
		}
		public void setCarName(String carName) {
			this.carName = carName;
		}
		public int getRentMoney() {
			return rentMoney;
		}
		public void setRentMoney(int rentMoney) {
			this.rentMoney = rentMoney;
		}
		public int getCarCapacity() {
			return carCapacity;
		}
		public void setCarCapacity(int carCapacity) {
			this.carCapacity = carCapacity;
		}
		public int getCarCarryCargo() {
			return carCarryCargo;
		}
		public void setCarCarryCargo(int carCarryCargo) {
			this.carCarryCargo = carCarryCargo;
		}
	
    }
	public class PassengerCar extends Car{
		public PassengerCar(int carNum,String carName,int rentMoney,int carCapacity){
			this.setCarNum(carNum);
			this.setCarName(carName);
			this.setRentMoney(rentMoney);
			this.setCarCapacity(carCapacity);
		}
	}
	public class Trunk extends Car{
		public Trunk(int carNum,String carName,int rentMoney,int carCarryCargo){
			this.setCarNum(carNum);
			this.setCarName(carName);
			this.setRentMoney(rentMoney);
			this.setCarCarryCargo(carCarryCargo);
		}
	}
	public class Pickup extends Car{
		public Pickup(int carNum,String carName,int rentMoney,int carCapacity,int carCarryCargo){
			this.setCarNum(carNum);
			this.setCarName(carName);
			this.setRentMoney(rentMoney);
			this.setCarCapacity(carCapacity);
			this.setCarCarryCargo(carCarryCargo);
		}
	}
	public void  isNeed(){
		System.out.println("是否使用哒哒打车:1是,0否");
		Scanner kb=new Scanner(System.in);
		int select=kb.nextInt();
		if(select==0){
			System.out.println("退出系统...");
		}
		else{
			System.out.println("欢迎使用哒哒打车系统");
			System.out.println("您可租车的类型及其价目表:");
			Car[] carForRentList={new PassengerCar(1,"奥迪A4",500,4),new PassengerCar(2,"马自达6",400,4),new Pickup(3,"皮卡雪6",450,4,2),new PassengerCar(4," 金龙 ",800,20),new Trunk(5,"松花江",400,4),new Trunk(6,"依维柯",1000,20)};
			System.out.println("编号:"+"\t"+"车名:"+"\t"+"价格:"+"\t"+"\t"+"载客量:"+"\t"+"载货量:");
			for(Car car:carForRentList){
				System.out.println(car.getCarNum()+"\t"+car.getCarName()+"\t"+car.getRentMoney()+"/天"+"\t"+"\t"+car.getCarCapacity()+"\t"+car.getCarCarryCargo()+"/吨");
			}
			System.out.println("请输入租车数量:");
			 int totalNum=kb.nextInt();
			while(totalNum<1||totalNum>6){
				System.out.println("输入错误!请输入一个1到6之间的整数!");
				System.out.println("请输入租车数量:");
				totalNum=kb.nextInt();
			}
			List<String> rentPassngercar=new ArrayList<String>();
			List<String> rentTrunk=new ArrayList<String>();
			List<String> rentPickup=new ArrayList<String>();
			int totalPassenger=0;
			int totalCarry=0;
			int totalMoney=0;
			int [] repeat=new int[totalNum];
			for(int i=1;i<=totalNum;i++){
				System.out.println("请输入第"+i+"辆车:");
				int num=kb.nextInt();
				while(num<1||num>6){
					System.out.println("输入错误!请输入一个1到6之间的整数!");
					System.out.println("请输入第"+i+"辆车:");
					num=kb.nextInt();
				}
				repeat[i-1]=num;
				while(repeatOrNot(i,num,repeat)){
					System.out.println("输入重复车辆!请重新输入:");
					num=kb.nextInt();
				}
				if(carForRentList[num-1] instanceof PassengerCar){
					rentPassngercar.add(carForRentList[num-1].getCarName());
				}
				else if(carForRentList[num-1] instanceof Trunk){
					rentTrunk.add(carForRentList[num-1].getCarName());
				}
				else{
					rentPickup.add(carForRentList[num-1].getCarName());
				}
				System.out.println("成功添加:"+carForRentList[num-1].getCarName());
				System.out.println("请输入第"+i+"辆车的租车天数:");
				int day=kb.nextInt();
				totalPassenger+=carForRentList[num-1].getCarCapacity();
				totalCarry+=carForRentList[num-1].getCarCarryCargo();
				totalMoney+=carForRentList[num-1].getRentMoney()*day;
			}
			System.out.println("************可载人的车有**************");
			for(String pList:rentPassngercar){
				System.out.print(pList+"");
			}
			System.out.println("************可载货的车有**************");
			for(String TList:rentTrunk){
				System.out.print(TList+"");
			}
			System.out.println("************既可载货又可载人的车有**************");
			for(String PickList:rentTrunk){
				System.out.print(PickList+"");
			}
			System.out.printf("总载客人数:%4d人",totalPassenger);
			System.out.printf("总载货数:%4d吨",totalCarry);
			System.out.printf("应付金额:+%4d",totalMoney);
			System.out.println("欢迎再次光临!");
		}
		

		}
	 public boolean repeatOrNot(int i,int num,int []repeat){
			for(int j=0;j<=i-2;j++){
				if(repeat[j]==num){
					return true;
				}
				
			}
			return false;
	 }
	
	public static void main(String[] args) {
		Test demo=new Test();
		demo.isNeed();
	
	}
	
	
}

顺便问问大家有没有用接口来实现载客和载货的两种方法?

正在回答

2 回答

用接口实现的话 就要在子类里重新定义函数,在定义对象时就不能用父类的引用指向子类的对象

0 回复 有任何疑惑可以回复我~

你的水平已经很高了,    我得向你学习学习!

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

最后一节,在各位前辈的基础上加了查重和防止输入数据越界的情况

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号