package?com.bb;
/*
?*?所有汽車的父類
?*/
public?class?car?{
private?int?carNumber;?//定義汽車的序號(hào)
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;
/*
?*?構(gòu)造一個(gè)既能載貨又能載客的皮卡
?*/
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;
/*
?*?構(gòu)造用于載貨的貨車
?*/
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("歡迎使用嗒嗒租車系統(tǒng)!");
System.out.println("您是否要租車??:1?是??0?否");
Scanner?c=new?Scanner(System.in);
int?k=c.nextInt();
if(k==1){
System.out.println("您可租車的類型及其價(jià)目表:");
car?[?]?carForRent={new?passengerCar(1,"奧迪A4",500,4),new?passengerCar(2,"馬自達(dá)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("序號(hào)"+"\t"+"汽車名稱"+"\t"+"租金"+"\t"+"\t"+"容量");
//打印輸出可供租的汽車清單
for?(car?car?:?carForRent)?{
//用instanceOf來(lái)測(cè)試左邊類型的對(duì)象是否是右邊類型的實(shí)例,返回值為Boolean
if(car?instanceof?passengerCar){
//若它是客車類型的實(shí)例,則打印出客車應(yīng)該有的屬性值,這里注意強(qiáng)轉(zhuǎn),否則不會(huì)出現(xiàn)
//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("請(qǐng)輸入您要租的汽車的數(shù)量");
int?totalNum=c.nextInt();?//用于接收汽車的總數(shù)量
//調(diào)用集合框架List用于存儲(chǔ)客戶租車的清單
List<car>?carList=new?ArrayList<car>();
int?p=0;?//p變量用來(lái)拓展carList的容量
List<car>?carListPassenger=new?ArrayList<car>();?//用來(lái)儲(chǔ)存可載人的車輛
List<car>?carListTrunk=new?ArrayList<car>();??//用來(lái)儲(chǔ)存可載貨的車輛
int?totalPassenger=0;;?//用來(lái)存儲(chǔ)總的載人數(shù)
int?totalCarrayCargo=0;?//用來(lái)存儲(chǔ)總的載貨量
int?totalMoney=0;?//用來(lái)計(jì)算租車的總資金
/*
?*?主要思想:用循環(huán)遍歷在添加客戶租車的序號(hào),用集合框架List來(lái)存儲(chǔ)客戶租的車輛。
?*?同時(shí)在客戶輸入序號(hào)的時(shí)候與三種車輛進(jìn)行比對(duì),計(jì)算相應(yīng)車輛的載人數(shù),載貨量以及租車的總資金
?*?同時(shí)添加到載人車輛或者載貨車輛當(dāng)中
?*/
for(int?i=0;i<totalNum;i++){
System.out.println("請(qǐng)輸入第"+(i+1)+"輛車的序號(hào):");
int?num=c.nextInt();?//用于接收輸入的汽車的序號(hào)
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("請(qǐng)輸入租車的天數(shù):");
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("********************租車的總價(jià)格********************");
System.out.println(totalMoney*carRenDay);
}else?if(k==0){
System.out.println("感謝您的再次使用!再見(jiàn)!");
}else{
System.out.println("您輸入的信息有錯(cuò)!");
}
}
}
2014-11-07
先說(shuō)一下改進(jìn)之處吧
1、出于代碼的規(guī)范,還是希望您在寫類的時(shí)候沒(méi)個(gè)單詞的首字母都能大寫;
2、在initialTest這個(gè)類中有兩個(gè)變量是不是沒(méi)有打印出來(lái)?totalPassenger和totalCarrayCargo這兩個(gè)變量是不是在下面的輸出語(yǔ)句中輸出一下呢?
3、這個(gè)為了這個(gè)程序的完美程度,建議看一下第三季中的異常機(jī)制,把異常加載這個(gè)程序中。
以上3點(diǎn)就是我認(rèn)為你可以改進(jìn)的地方。
不過(guò)從整體而言,這個(gè)程序,你這么來(lái)寫代碼已經(jīng)很好了,在類的繼承,foreach的使用以及各參數(shù)的傳遞上都做的挺好,并且你還用到了List集合,很棒哦~
后面的同學(xué)可以參看一下這個(gè)代碼的,同時(shí)有什么不懂的也可以發(fā)問(wèn)的
2018-02-27
我想問(wèn)一下為什么父類car中的屬性都設(shè)置成了private?能設(shè)置成public嗎?
2017-12-15
2017-09-14
this.setCarNumber(carNumber);
????????this.setCarName(carName);
????????this.setCarRentMoney(carRentMoney);
????? ?為啥要加 this ,不能直接用this后面的 方法嗎?
2017-07-26
你的代碼其實(shí)還可以優(yōu)化,比如說(shuō)在每個(gè)繼承Car的子類中的構(gòu)造函數(shù),可以利用super關(guān)鍵字,調(diào)用父類的序號(hào)、名稱、租車,如
public class PassagerCar extends Car {
private int capacityPerson;
public PassagerCar(String aName, int aRentMoney, int aCapacityPerson) {
super(aName, aRentMoney);
this.capacityPerson = aCapacityPerson;
}
public int getCapacityPerson() {
return capacityPerson;
}
@Override
public String toString() {
return getName() + "\t" + getRentMoney() + "元/天" + "\t" + "載人:" + capacityPerson + "人";
}}
其次,在輸出租車的價(jià)目表時(shí),可通過(guò)重寫每個(gè)子類的toString()方法來(lái)輸出車的詳細(xì)信息,如上所示。
?。?!有一點(diǎn),我想請(qǐng)教你一下,代碼的設(shè)計(jì)上用到了多態(tài)的概念,但是在計(jì)算總載客量和總載貨量時(shí),需要用到instanceof來(lái)判斷子類類型,并通過(guò)強(qiáng)制類型轉(zhuǎn)換的方式來(lái)獲得載人量或載貨量,但是書(shū)上說(shuō)不建議強(qiáng)制類型轉(zhuǎn)換。那這個(gè)應(yīng)該怎么處理呢?
2017-07-20
請(qǐng)教一下租好的車的那個(gè)列表清單能輸出來(lái)嗎,就是把存在集合框架里的清單List<car>?carList=new?ArrayList<car>();打印出來(lái),如果可以要怎樣實(shí)現(xiàn)呢,
2017-05-09
這貼夠老,順便附上我寫的http://yifanck.cn/article/17914
2017-03-23
package com.sram.beans;
public class Car {
private int numorder;
private String name;
private int price;
private String capacity;
public Car() {
super();
// TODO Auto-generated constructor stub
}
public Car(int numorder, String name, int price, String capacity) {
super();
this.numorder = numorder;
this.name = name;
this.price = price;
this.capacity = capacity;
}
public int getNumorder() {
return numorder;
}
public void setNumorder(int numorder) {
this.numorder = numorder;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getCapacity() {
return capacity;
}
public void setCapacity(String capacity) {
this.capacity = capacity;
}
@Override
public String toString() {
return ?+ numorder + ". ?" + name + " ?"
+ price + "元/天 ? ?" + capacity ;
}
}
package com.sram.test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import com.sram.beans.Car;
public class CarrentalSystem {
public static void main(String[] args){
System.out.println("歡迎使用答答租車系統(tǒng)");
boolean b = true;
Scanner sc = new Scanner(System.in);
while(b){
System.out.println("您是否要租車:Y/N");
String a = sc.next();
if("Y".equals(a)){
System.out.println("您可租車類型及其價(jià)格表");
System.out.println("序號(hào) ? "+"汽車名稱 ?"+"租金 ? ? ? ? ? "+"容量");
ArrayList<Car> list = new ArrayList<Car>();
list.add(new Car(1, "奧迪A4", 500, "載人:4人"));
list.add(new Car(2, "皮卡6 ", 400, "載人:4人 載貨:2噸"));
list.add(new Car(3, "金龍 ? ? ? ", 800, "載人:20人"));
list.add(new Car(4, "松花江 ? ", 400, "載貨:4噸"));
for (Car car : list) {
System.out.println(car);
}
System.out.println("請(qǐng)輸入你要租車的數(shù)量");
HashSet<String> set1 = new HashSet<String>();
HashSet<String> set2 = new HashSet<String>();
int c = sc.nextInt();
int g = 0;
int p = 0;
int o = 0;
for(int d = 1;d<=c;d++){
System.out.println("請(qǐng)輸入第"+d+"輛車的序號(hào)");
int e = sc.nextInt();
if(e == 1||e == 2||e == 3||e == 4){
for (int f = 0; f < list.size(); f++) {
if(list.get(f).getNumorder() == e){
g+=list.get(f).getPrice();
if(e <= 3){
set1.add(list.get(f).getName());
if(e == 1){
p+=4;
}else if(e == 2){
p+=4;
}else if(e == 3){
p+=20;
}
}
if(e == 2||e == 4){
set2.add(list.get(f).getName());
if(e == 2){
o+=2;
}else if(e == 4){
o+=4;
}
}
}
}
}else{
System.out.println("您輸入有誤,請(qǐng)重新輸入");
continue;
}
}
System.out.println("請(qǐng)輸入租車天數(shù)");
int h = sc.nextInt();
if(h > 0){
int i = g*h;
System.out.println("您的賬單");
System.out.println("***可載人的車有");
for (String str1 : set1) {
System.out.print(str1+" ?");
}
System.out.println("共載人"+p+"人");
System.out.println("***可載貨的車有");
for (String str2 : set2) {
System.out.print(str2+" ?");
}
System.out.println("共載貨"+o+"噸");
System.out.println("**租車總價(jià)錢"+i+"元");
}else{
System.out.println("你輸入有誤,請(qǐng)重新輸入");
continue;
}
break;
}else if("N".equals(a)){
System.out.println("歡迎下次使用");
b = false;
}else{
System.out.println("您輸入有誤,請(qǐng)重新輸入");
continue;
}
}
}
}
初學(xué)者,大家都給提提意見(jiàn)
2017-02-16
for?(car?car?:?carForRent)
此句代碼不是foreach吧,這個(gè)該怎么理解
2017-01-31
為什么要強(qiáng)制轉(zhuǎn)換載客數(shù)量那些 沒(méi)太懂 不換怎么就輸出不出來(lái)了