亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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是什么型?。课抑恢纈nt String 。。
2016-04-25 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號