为了账号安全,请及时绑定邮箱和手机立即绑定
package com.bb;
/*
 * 所有汽车的父类
 */
public class car {
	private int carNumber; //定义汽车的序号
	private String carName; //定义汽车的名字
	private int carRentMoney; //定义汽车的租金
	
	
	public int getCarNumber() {
		return carNumber;
	}
	public void setCarNumber(int carNumber) {
		this.carNumber = carNumber;
	}
	public String getCarName() {
		return carName;
	}
	public void setCarName(String carName) {
		this.carName = carName;
	}
	public int getCarRentMoney() {
		return carRentMoney;
	}
	public void setCarRentMoney(int carRentMoney) {
		this.carRentMoney = carRentMoney;
	}

}
package com.bb;
/*
 * 定于用于载客的客车
 */
public class passengerCar extends car {
	private int carCapacity; //定义载客客车的载客量
	
	public passengerCar(int carNumber,String carName,int carRentMoney,int carCapacity){
		this.setCarNumber(carNumber);
		this.setCarName(carName);
		this.setCarRentMoney(carRentMoney);
		this.carCapacity=carCapacity;
	}

	
	public int getCarCapacity() {
		return carCapacity;
	}

	public void setCarCapacity(int carCapacity) {
		this.carCapacity = carCapacity;
	}
	
}
package com.bb;
/*
 * 构造一个既能载货又能载客的皮卡
 */
public class pickUp extends car {
	private int carCapacity; //定义皮卡的载客量
	private int carCarryCargo; //定义皮卡的载货量
	
	public pickUp(int carNumber,String carName,int carRentMoney,int carCapacity,int carCarryCargo){
		this.setCarNumber(carNumber);
		this.setCarName(carName);
		this.setCarRentMoney(carRentMoney);
		this.carCapacity=carCapacity;
		this.carCarryCargo=carCarryCargo;
	}

	
	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;
	}

}
package com.bb;
/*
 * 构造用于载货的货车
 */
public class trunk extends car {
	private int carCarryCargo; //定义货车的载货量
	
	public trunk(int carNumber,String carName,int carRentMoney,int carCarryCargo){
		this.setCarNumber(carNumber);
		this.setCarName(carName);
		this.setCarRentMoney(carRentMoney);
		this.carCarryCargo=carCarryCargo;
	}

	
	public int getCarCarryCargo() {
		return carCarryCargo;
	}

	public void setCarCarryCargo(int carCarryCargo) {
		this.carCarryCargo = carCarryCargo;
	}

}
package com.bb;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class initialTest {

	public static void main(String[] args) {
		System.out.println("欢迎使用嗒嗒租车系统!");
		System.out.println("您是否要租车? :1 是  0 否");
		Scanner c=new Scanner(System.in);
		int k=c.nextInt();
		if(k==1){
			System.out.println("您可租车的类型及其价目表:");
			car [ ] carForRent={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"+"容量");
			
			//打印输出可供租的汽车清单
			for (car car : carForRent) {
				//用instanceOf来测试左边类型的对象是否是右边类型的实例,返回值为Boolean
				if(car instanceof passengerCar){
					//若它是客车类型的实例,则打印出客车应该有的属性值,这里注意强转,否则不会出现
					//passengerCar类的CarCapacity属性
					System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
							                      +"/天"+"\t"+"载人:"+((passengerCar)car).getCarCapacity()+"人");
					
				}
				if(car instanceof pickUp){
					System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
							                      +"/天"+"\t"+"载人:"+((pickUp)car).getCarCapacity()+"人"+"\t"
							                      +"载货:"+((pickUp)car).getCarCarryCargo()+"吨");
				}
				if(car instanceof trunk){
					System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
		                                          +"/天"+"\t"+"载货:"+((trunk)car).getCarCarryCargo()+"吨");
				}
			}
	
			System.out.println("请输入您要租的汽车的数量");
			int totalNum=c.nextInt(); //用于接收汽车的总数量
			
			//调用集合框架List用于存储客户租车的清单
			List<car> carList=new ArrayList<car>();
			int p=0; //p变量用来拓展carList的容量
			
			List<car> carListPassenger=new ArrayList<car>(); //用来储存可载人的车辆
			List<car> carListTrunk=new ArrayList<car>();  //用来储存可载货的车辆
			
			int totalPassenger=0;; //用来存储总的载人数
			int totalCarrayCargo=0; //用来存储总的载货量
			int totalMoney=0; //用来计算租车的总资金
			
			/*
			 * 主要思想:用循环遍历在添加客户租车的序号,用集合框架List来存储客户租的车辆。
			 * 同时在客户输入序号的时候与三种车辆进行比对,计算相应车辆的载人数,载货量以及租车的总资金
			 * 同时添加到载人车辆或者载货车辆当中
			 */
			for(int i=0;i<totalNum;i++){
				System.out.println("请输入第"+(i+1)+"辆车的序号:");
				int num=c.nextInt(); //用于接收输入的汽车的序号
				carList.add(carForRent[num-1]);
				System.out.println("成功添加:"+carList.get(p).getCarName());
				if(carForRent[num-1] instanceof passengerCar){
					totalPassenger+=((passengerCar)carList.get(p)).getCarCapacity();
					totalMoney+=((passengerCar)carList.get(p)).getCarRentMoney();
					carListPassenger.add(carList.get(p));
				}
				if(carForRent[num-1] instanceof pickUp){
					totalPassenger+=((pickUp)carList.get(p)).getCarCapacity();
					totalCarrayCargo+=((pickUp)carList.get(p)).getCarCarryCargo();
					totalMoney+=((pickUp)carList.get(p)).getCarRentMoney();
					carListPassenger.add(carList.get(p));
					carListTrunk.add(carList.get(p));
				}
				if(carForRent[num-1] instanceof trunk){
					totalCarrayCargo+=((trunk)carList.get(p)).getCarCarryCargo();
					totalMoney+=((trunk)carList.get(p)).getCarRentMoney();
					 carListTrunk.add(carList.get(p));
				}
				p++;
			}
			
			System.out.println("请输入租车的天数:");
			int carRenDay=c.nextInt();
			totalMoney=totalMoney*carRenDay;
			
			System.out.println("********************可载人的车有********************");
			for (car car : carListPassenger) {
				System.out.println(car.getCarName());
			}
			
			System.out.println("********************可载货的车有********************");
			for (car car : carListTrunk) {
				System.out.println(car.getCarName());
			}
			
			System.out.println("********************租车的总价格********************");
			System.out.println(totalMoney*carRenDay);
			
		}else if(k==0){
			System.out.println("感谢您的再次使用!再见!");
			
		}else{
			System.out.println("您输入的信息有错!");
		}
	}
}


正在回答

75 回答

好厉害!!!

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

List  那里有点看不懂

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

振shi少年

百度到一个比较好的答案链接http://zhidao.baidu.com/link?url=q1OGQl9mclIje_yUI235iy-rUdEBYSHt9jAIXEmyiDb0Ae-dUuB6s2L4QiB6Qu9LdUKazqIfQ79cVnuDs7P9sK
2015-12-01 回复 有任何疑惑可以回复我~

你这里的继承效率并不高,你子类里写了很多重复的代码,载货和载人抽象出来直接用更好

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

((passengerCar)car).getCarCapacity()为什么要强制类型转换呢?现在的Car car引用不是相当于用了多态么?car应该也可以用子类独有的属性啊?

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

爱德菲尔德

for循环里面应该相当于Car car=new PassengerCar();这样的吧?应该是多态吧?
2015-02-17 回复 有任何疑惑可以回复我~
#2

11知足11

子类是对父类的继承并添加了自己的属性值,换句话说子类可以使用父类所有的定义变量而父类则不能使用子类另外添加的变量,所以这里要进行强制转换来调用子类的变量值
2016-02-04 回复 有任何疑惑可以回复我~

if(carForRent[num-1] instanceof passengerCar){

                    totalPassenger+=((passengerCar)carList.get(p)).getCarCapacity();

                    totalMoney+=((passengerCar)carList.get(p)).getCarRentMoney();

                    carListPassenger.add(carList.get(p));

                }

楼主代码写的很赞,学习了。不过感觉上面这段代码好像有点小问题,希望能指教一下:carList是父类car的对象,可以向下强转为子类类型passengerCar吗,这个地方不会报错吗?

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

Alex_L

不好意思,一时手快,我的意思是:carList的泛型是car,可以向下强转为子类类型passengerCar吗,这个地方不会报错吗?
2015-01-06 回复 有任何疑惑可以回复我~
#2

DeppWang

你说的我不懂. 我请问一下,get(p)什么意思
2016-03-25 回复 有任何疑惑可以回复我~

厉害啊……有些可能是忘了,但有些我应该是没见过才对

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

项目做了一大半,有些东西感觉确实很有难度,看自己写的代码,重复的很多,总感觉不需要这样写,但是却不知道该怎么写,还需要多加努力

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

应该是定义了一个对象数组,?for循环那个?是这段吧

 //打印输出可供租的汽车清单
            for (car car : carForRent) {
            }
           
   这应该是老师说的foreach语句吧,在我们的视频讲解中好像没有提到不知道后面有没有提到
0 回复 有任何疑惑可以回复我~
#1

爱德菲尔德

第一季有
2015-02-17 回复 有任何疑惑可以回复我~
#2

采菊大侠

这是foreach语法 作用是遍历数组元素并显示出来。 希望能帮到您。
2016-10-24 回复 有任何疑惑可以回复我~

这里car[]类型是自定义类型数组吗   他跟 car类有什么关系

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

Bad__Guy

同感有点不懂
2015-06-21 回复 有任何疑惑可以回复我~
#2

速度de学习

谁能给说下new passengerCar(1,"奥迪A4",500,4)输出给了car[0]什么值 看不懂啊
2015-10-13 回复 有任何疑惑可以回复我~
#3

SmileLu 回复 速度de学习

因为数组中的index是从0开始计算的,所以car[0]就是该数组中的第一项,就是奥迪A4
2015-10-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程
意见反馈 帮助中心 APP下载
官方微信