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

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

感覺主體臃腫,結構不夠好,希望大家指教。

package?com.imooc.dada;

//父類
public?abstract?class?Aotu?{
	public?String?name;
	public?float?price;
	public?int?manned;
	public?float?cargo;
	//public?int?number;
	
	public?abstract?void?run();
}
package?com.imooc.dada;

//其中一子類
public?class?Aodi?extends?Aotu?{
	
	@Override
	public?void?run()?{
		//?TODO?Auto-generated?method?stub
		
	}
	
	Aodi(){
		name?=?"奧迪A4?";
		price?=?500;
		manned?=?4;
		cargo?=?0;
	}

}
package?com.imooc.dada;

import?java.util.Scanner;
//主程序入口
public?class?Dada?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		Scanner?input?=?new?Scanner(System.in);
		int?inputbuf?=?0;		//輸入緩存
		int[]?inputData;		//用戶輸入數據
		float?allMoney?=?0;		//總金額
		int?day?=?0;			//天數
		String[]?takePerson;	//載人車名
		String[]?takeGoods;		//載貨車名
		int?loadNumber?=?0;		//總載人數
		float?ladenNumber?=?0;	//總載貨數
		
		//創建各個對象
		Aotu?aodi?=?new?Aodi();	
		Aotu?mazida?=?new?Mazida();
		Aotu?pikaxue?=?new?Pikaxue();
		Aotu?jinlon?=?new?Jinlon();
		Aotu?songhuajiang?=?new?Songhuajiang();
		Aotu?yiweike?=?new?Yiweike();
		
		//租車流程開始
		System.out.println("歡迎使用答答租車系統:");
		System.out.println("您是否要搭車:1是?0否");
		
		inputbuf?=?input.nextInt();
		if(inputbuf?==?1){
			//打印車輛信息
			System.out.println("您可租車的類型和價格表:");
			System.out.println("序號??汽車名稱???????租金????????????????????容量");
			System.out.println("1、??"+aodi.name+aodi.price+"元/天"+"?????"+"載人:"+aodi.manned+"人"+"???"+"載貨:"+aodi.cargo+"噸");
			System.out.println("2、??"+mazida.name+mazida.price+"元/天"+"????"+"載人:"+mazida.manned+"人"+"???"+"載貨:"+mazida.cargo+"噸");
			System.out.println("3、??"+pikaxue.name+pikaxue.price+"元/天"+"????"+"載人:"+pikaxue.manned+"人"+"???"+"載貨:"+pikaxue.cargo+"噸");
			System.out.println("4、??"+jinlon.name+jinlon.price+"元/天"+"????"+"載人:"+jinlon.manned+"人"+"???"+"載貨:"+jinlon.cargo+"噸");
			System.out.println("5、??"+songhuajiang.name+songhuajiang.price+"元/天"+"????"+"載人:"+songhuajiang.manned+"人"+"???"+"載貨:"+songhuajiang.cargo+"噸");?
			System.out.println("6、??"+yiweike.name+yiweike.price+"元/天"+"??"+"載人:"+yiweike.manned+"人"+"???"+"載貨:"+yiweike.cargo+"噸");
			System.out.println("");
			//用戶輸入
			System.out.println("請輸入您要租車的數量:");
			inputbuf?=?input.nextInt();
			inputData?=?new?int[inputbuf];
			takeGoods?=?new?String[inputbuf];
			takePerson?=?new?String[inputbuf];
			//用戶輸入車序號
			for(int?i?=?0;i?<?inputbuf;i++){
				System.out.println("請輸入第"+(i+1)+"輛車的序號:");
				inputData[i]?=?input.nextInt();
			}
			
			System.out.println("請輸入租車天數:");
			day?=?input.nextInt();
			input.close();?
			//清空數據
			allMoney?=?0;
			ladenNumber?=?0;
			loadNumber?=?0;
			for(int?i?=?0,j?=?0,z?=?0;i?<?inputData.length;i++){
				//計算總載人數和總載貨數,獲取載人車名和載貨車名
				switch(inputData[i]){
					case?1:	allMoney?=?allMoney?+?aodi.price*day;
							loadNumber?=?loadNumber?+?aodi.manned;
							takePerson[j]?=?aodi.name;
							j++;
						break;
					case?2:	allMoney?=?allMoney?+?mazida.price*day;
							loadNumber?=?loadNumber?+?mazida.manned;
							takePerson[j]?=?mazida.name;
							j++;
						break;
					case?3:	allMoney?=?allMoney?+?pikaxue.price*day;
							loadNumber?=?loadNumber?+?pikaxue.manned;
							ladenNumber?=?ladenNumber?+?pikaxue.cargo;
							takePerson[j]?=?pikaxue.name;
							takeGoods[z]?=?pikaxue.name;
							z++;
							j++;
						break;
					case?4:	allMoney?=?allMoney?+?jinlon.price*day;
							loadNumber?=?loadNumber?+?jinlon.manned;
							takePerson[j]?=?jinlon.name;
							j++;
						break;
					case?5:	allMoney?=?allMoney?+?songhuajiang.price*day;
							ladenNumber?=?ladenNumber?+?songhuajiang.cargo;
							takeGoods[z]?=?pikaxue.name;
							z++;
						break;
					case?6:	allMoney?=?allMoney?+?yiweike.price*day;
							ladenNumber?=?ladenNumber?+?pikaxue.cargo;
							takeGoods[z]?=?pikaxue.name;
							z++;
						break;
					default:
						
				}
			}
			//打印賬單
			System.out.println("您的帳單:");
			System.out.println("***可載人的車有:");
			for(String?s:takePerson){
				if(s?!=?null){
					System.out.print(s?+?"??");
				}
			}
			System.out.println("共載人:"?+?loadNumber?+?"人");
			
			System.out.println("***載貨的車有:");
			for(String?s:takeGoods){
				if(s?!=?null){
					System.out.print(s?+?"??");
				}
			}
			System.out.println("共載貨:"?+?ladenNumber?+?"噸");
			
			System.out.println("租車總價錢:"?+?allMoney);
		}else{
			System.out.println("再見!");
		}
		
	}

}


正在回答

3 回答

package diDiDaChe;


public ?class Car {

private double money;

private String name;

public Car(String name,double money){

this.money=money;

this.name=name;

}

public ?void setMoney(double money){

this.money=money;

};

public ?double getMoney(){

return money;

};


public ?String getName(){

return name;

};


}

package diDiDaChe;


public ?class MannedCar extends Car{

static int baseMoney=1000;

private int manned;

public MannedCar(String name,double money,int manned){

super(name,money);

this.manned=manned;

}

public ?void ?setManned(int manned){

this.manned=manned;

};

public int getManned(){

return manned;

}


}

package diDiDaChe;


public class Truck extends Car{

//載貨量

static int baseMoney=2000;

private int container;

public Truck(String name,double money,int container){

super(name,money);

this.container=container;

}

public ?void ?setContainer(int container){

this.container=container;

};

public int getContainer(){

return container;

}


}

package diDiDaChe;


import java.util.InputMismatchException;

import java.util.Scanner;


public class DiDi {

double sumMoney=0;

MannedCar Aodi=new MannedCar("奧迪",500,4);

MannedCar Bingli=new MannedCar("賓利",1000,6);

MannedCar WuLi=new MannedCar("五菱之光",200,12);

MannedCar BMW=new MannedCar("寶馬",800,4);

Truck DF=new Truck("東風",1000,40);

Truck DZ=new Truck("大眾",800,30);

Truck FT=new Truck("豐田",500,20);

MannedCar[] mannedCar={Aodi,Bingli,WuLi,BMW};

Truck[] truck={DF,DZ,FT};

public ?double canMoney(Car car,int day){

if(car instanceof MannedCar){

sumMoney=day*car.getMoney()+Truck.baseMoney;

}else{

sumMoney=day*car.getMoney()+MannedCar.baseMoney;

}

return sumMoney;

}

public static int inputDay(){

System.out.println("請輸入要租的天數");

Scanner sc=new Scanner(System.in);

sc.useDelimiter("\n");

String s=sc.next();

int k=Integer.parseInt(s.trim());

return k;

}

public Car outPutCar(int i){

if(i==1){

System.out.println("轎車品牌"+" ? ? "+"每天單價"+" ? ? ?載人量");

for(int j=0;j<mannedCar.length;j++){

System.out.println(j+1+mannedCar[j].getName()+mannedCar[j].getMoney()+mannedCar[j].getManned());

}

System.out.println("請輸入所需轎車的編號");

Scanner sc=new Scanner(System.in);

sc.useDelimiter("\n");

String s=sc.next();

int k=Integer.parseInt(s.trim());

if(k<0||k>=mannedCar.length){

System.out.println("沒有這輛車請重新輸入一遍");

outPutCar(i);

}

return mannedCar[k];

}else{

System.out.println("卡車品牌"+" ? ? "+"每天單價"+" ? ? ?載貨量");

for(int j=0;j<truck.length;j++){

System.out.println(j+1+truck[j].getName()+truck[j].getMoney()+truck[j].getContainer());

}

System.out.println("請輸入所需卡車的編號");

Scanner sc=new Scanner(System.in);

sc.useDelimiter("\n");

String s=sc.next();

int k=Integer.parseInt(s.trim());

if(k<0||k>=truck.length){

System.out.println("沒有這輛車請重新輸入一遍");

outPutCar(i);

}

return truck[k];

}

}?

public static int decideCar(){

System.out.println("請選擇載貨或載人,載貨請輸1,載人請輸2,并以回車結束");

Scanner sc=new Scanner(System.in);

sc.useDelimiter("\n");

String s=sc.next();

int i=Integer.parseInt(s.trim());

if(i!=1&&i!=2){

System.out.println("輸入錯誤請重新輸入");

decideCar();

}

return i;

}

public static void main(String[] args){

DiDi didi=new DiDi();

int i=decideCar();

Car car=didi.outPutCar(i);

int k=inputDay();

System.out.println(car.getName()+"車租用"+k+"天的價格是1"+didi.canMoney(car,k));

}


}


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

Et9 提問者

if(car instanceof MannedCar){ sumMoney=day*car.getMoney()+Truck.baseMoney; }else{ sumMoney=day*car.getMoney()+MannedCar.baseMoney; } 這里會不會反了?
2016-06-17 回復 有任何疑惑可以回復我~
#2

rescue_rong 回復 Et9 提問者

恩恩,反了,謝謝指出
2016-06-18 回復 有任何疑惑可以回復我~
#3

Et9 提問者

非常感謝!
2016-06-18 回復 有任何疑惑可以回復我~

你看把車型放在一個引用數組里面,用的時候調用,是不是可以減少代碼量。這樣的話,包括你的打印車輛信息以及switch選擇部分都可以減少一大段代碼量。

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

打印車輛信息部分添加父類方法,傳不同車型打印不同信息。下面case中也在父類定義一個方法,分別傳入不同值,計算出不同數據。

(拙見,也是新手)

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

Et9 提問者

恩恩,這樣的話可以減少很多代碼,看起來不會那么臃腫,謝謝。
2016-06-17 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

感覺主體臃腫,結構不夠好,希望大家指教。

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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