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

Car.java 所有汽车的父类

package com.imooc;

public class Car {
	protected String name;
	protected double rent;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getRent() {
		return rent;
	}
	public void setRent(double rent) {
		this.rent = rent;
	}
	
}

passengerCar.java 客车

package com.imooc;

public class passengerCar extends Car {
	private double peopleCapacity;
	public passengerCar(String name,double rent,double peoplecapacity){
		this.name=name;
		this.rent=rent;
		this.peopleCapacity=peoplecapacity;
	}
	public double getPeopleCapacity() {
		return peopleCapacity;
	}

	public void setPeopleCapacity(double peopleCapacity) {
		this.peopleCapacity = peopleCapacity;
	}
	
}

PickUp.java 皮卡

package com.imooc;

public class PickUp extends Car {
	private double cargoCapacity;
	private double peopleCapacity;
	public PickUp(String name,double rent,double cargoCapacity,double peopleCapacity){
		this.name=name;
		this.rent=rent;
		this.cargoCapacity=cargoCapacity;
		this.peopleCapacity=peopleCapacity;
	}
	public double getCargoCapacity() {
		return cargoCapacity;
	}
	public void setCargoCapacity(double cargoCapacity) {
		this.cargoCapacity = cargoCapacity;
	}
	public double getPeopleCapacity() {
		return peopleCapacity;
	}
	public void setPeopleCapacity(double peopleCapacity) {
		this.peopleCapacity = peopleCapacity;
	}
	
}

Trunk.java 货车

package com.imooc;

public class Trunk extends Car {
	private double cargoCapacity;
	public Trunk(String name,double rent,double cargoCapacity){
		this.name=name;
		this.rent=rent;
		this.cargoCapacity=cargoCapacity;
	}
	public double getCargoCapacity() {
		return cargoCapacity;
	}

	public void setCargoCapacity(double cargoCapacity) {
		this.cargoCapacity = cargoCapacity;
	}
	
}

Test.java 测试类

package com.imooc;

import java.util.Scanner;

public class Test{
	
	public static void main(String[] args) {
		Car[] carsForRent={new passengerCar("奥迪A4",500,4),new passengerCar("马自达6", 400, 4),new PickUp("皮卡雪6", 450,2, 4),new passengerCar("金龙", 800, 20),new Trunk("松花江", 400, 4),new Trunk("依维柯", 1000, 20)};
		System.out.println("欢迎使用答答租车系统:");
		System.out.println("你是否需要租车:1是 0否");
		Scanner scan=new Scanner(System.in);
		String input=scan.next();
		if(input.equals("1")){
			System.out.println("你可租车的类型及其价目表:");
			System.out.println("序号\t汽车名称\t租金\t\t容量");
			int i=1;
			for(Car currentCar:carsForRent){
				if(currentCar instanceof passengerCar){
					System.out.println("" + i +"\t"+ currentCar.getName() + "\t" + currentCar.getRent() + "元/天\t" + ((passengerCar)currentCar).getPeopleCapacity()+"人");
				}
				if(currentCar instanceof PickUp){
					System.out.println("" + i +"\t"+ currentCar.getName() + "\t" + currentCar.getRent() + "元/天\t" + ((PickUp)currentCar).getPeopleCapacity()+"人  "+((PickUp)currentCar).getCargoCapacity()+"吨");
				}
				if(currentCar instanceof Trunk){
					System.out.println("" + i +"\t"+ currentCar.getName() + "\t" + currentCar.getRent() + "元/天\t" + ((Trunk)currentCar).getCargoCapacity()+"吨");
				}
				i++;
			}
			System.out.println("请输入您要租汽车的数量:");
			int rentNum=scan.nextInt();
			int[] carsRent=new int[rentNum];
			for(int j=0;j<rentNum;j++){
				System.out.println("请输入第"+(j+1) + "辆车的序号:");
				carsRent[j]=scan.nextInt();
			}
			System.out.println("请输入租车天数:");
			int daysRent=scan.nextInt();
			int totalPeopley=0;
			int totalCargoy=0;
			double totalMoney=0;
			String carsForPeople="";
			String carsForCargo="";
			for(int j=0;j<rentNum;j++){
				totalMoney+=carsForRent[carsRent[j]-1].getRent();
				if(carsForRent[carsRent[j]-1] instanceof passengerCar){
					totalPeopley+=((passengerCar)carsForRent[carsRent[j]-1]).getPeopleCapacity();
					carsForPeople+=carsForRent[carsRent[j]-1].getName()+"\t";
				}
				if(carsForRent[carsRent[j]-1] instanceof PickUp){
					totalPeopley+=((PickUp)carsForRent[carsRent[j]-1]).getPeopleCapacity();
					totalCargoy+=((PickUp)carsForRent[carsRent[j]-1]).getCargoCapacity();
					carsForPeople+=carsForRent[carsRent[j]-1].getName()+"\t";
					carsForCargo+=carsForRent[carsRent[j]-1].getName()+"\t";
				}
				if(carsForRent[carsRent[j]-1] instanceof Trunk){
					totalCargoy+=((Trunk)carsForRent[carsRent[j]-1]).getCargoCapacity();
					carsForCargo+=carsForRent[carsRent[j]-1].getName()+"\t";
				}
			}
			totalMoney=totalMoney*daysRent;
			System.out.println("您的账单:");
			System.out.println("***可载人的车有:");
			System.out.println(carsForPeople +"\t共载人:" +totalPeopley+"人" );
			System.out.println("***载货的车有:");
			System.out.println(carsForCargo +"\t共货:" +totalCargoy+"吨" );
			System.out.println("***租车总价格:"+totalMoney+"元");
			scan.close();
		}
	}

}


正在回答

8 回答

totalMoney+=carsForRent[carsRent[j]-1].getRent();

这里为什么减一啊???好难理解的程序


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

努力不简单

求大神指点
2016-04-26 回复 有任何疑惑可以回复我~

3Q,学习了很多

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

厉害!没想到可以这样定义类。

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

milk2468

您好,我想请教一下,在他定义数组时为什么单单用一个Car 就可以定义这个数组了? 还有就是for(Car currentCar:carForRent)这个我知道是遍历数组,但是这个currentCar是什么意思?
2015-02-25 回复 有任何疑惑可以回复我~
#2

卓戈卡奥 回复 milk2468

for(int i=0;i<carForRent.length<i++){ Car car currentCar = carForRent[i]; .......//你要写的代码 } 所以这里的currentCar是你声明的数组(也可以是各种集合)中的元素的临时变量名
2015-08-10 回复 有任何疑惑可以回复我~
#3

卓戈卡奥 回复 卓戈卡奥

这里的for(Car currentCar:carForRent)和我上面写的这种普通写法基本上是一个功能
2015-08-10 回复 有任何疑惑可以回复我~
#4

卓戈卡奥 回复 卓戈卡奥

前者叫做“foreach”写法
2015-08-10 回复 有任何疑惑可以回复我~
查看1条回复

我想请教几个问题:

1.第8~10行,

 Car[] carsForRent={new passengerCar("奥迪A4",500,4),new passengerCar("马自达6", 400, 4),new PickUp("皮卡雪6", 450,2, 4),new passengerCar("金龙", 800, 20),new Trunk("松花江", 400, 4),new Trunk("依维柯", 1000, 20)};

定义这个数组的时候,可以这么用吗?它的成员是小括号里的汉字吗?

2.第19行,

for(Car currentCar:carsForRent)

for循环的这种用法没有见过,请问是什么意思啊,carsForRent是什么东西啊

3.49~62行,比如

totalPeopley+=((passengerCar)carsForRent[carsRent[j]-1]).getPeopleCapacity()
totalMoney+=carsForRent[carsRent[j]-1].getRent()

这些都看不大懂,请明白的人解释一下,菜鸟在此先谢过了

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

Naritheon

1.数组不一定非要存储数字,它是相当于一类具有相同属性的对象的集合,任何对象都可以放进去,以上代码中的Car自然也可以放进去了。 2.这是foreach循环遍历,具体的可以自己百度,不难的。 3.最后这两个代码是求总人数和每天的总价格。 carsRent[]这个数组里面存的是用户输入要租的车辆的编号。 举个例子:当j=0的时候,如果用户输入的要租的第一辆车的编号是2(马自达6),那么carsRent[0] = 2,但是carsForRent[2]里面存的元素是皮卡雪,因为数组下标从0开始,所以要减1,再转化一下类型passengerCar就可以调用get函数了,希望帮到你。
2014-12-15 回复 有任何疑惑可以回复我~
#2

Kuroij 回复 Naritheon

Car[] carsForRent={new passengerCar("奥迪A4",500,4),new passengerCar("马自达6", 400, 4),new PickUp("皮卡雪6", 450,2, 4),new passengerCar("金龙", 800, 20),new Trunk("松花江", 400, 4),new Trunk("依维柯", 1000, 20)}; 为什么我在eclipse里用这样的方法声明数组的时候提示错误- -。
2015-04-08 回复 有任何疑惑可以回复我~

mark

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

如果我选两辆2好车,那打印出来的结果还对吗?还有,用foreach还for()循环比较好呢   那个类的声明学习了!

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

mark

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

good你可以发到我们邮箱中哦~


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

汪敏

老师,test里面的数组类型写的是car类型,这是怎么回事,这之前的准备应该有怎样的操作呢,我还以为只有int,string等等类型
2014-10-13 回复 有任何疑惑可以回复我~
#2

汪敏

for(Car currentCar:carsForRent){ 老师,这个语句应该是for循环吧,for循环不是不能省略分号;吗,而且里面的Car currentCar:carsForRent是怎么构成的啊? 还有52行的这句: totalPeopley+=((passengerCar)carsForRent[carsRent[j]-1]).getPeopleCapacity();其中的((passengerCar)carsForRent[carsRent[j]-1])这是什么结构啊,虽然意思貌似明白是passenger类里面的,但这个写法,之前的教学没有涉及吧
2014-10-13 回复 有任何疑惑可以回复我~
#3

汪敏

已经查阅相关资料明白了
2014-10-14 回复 有任何疑惑可以回复我~
#4

努力不简单 回复 汪敏

我也是这个问题,car是什么型啊?我只知道int String 。。
2016-04-25 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信