最后一节,在各位前辈的基础上加了查重和防止输入数据越界的情况
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();
}
}顺便问问大家有没有用接口来实现载客和载货的两种方法?