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; //用戶輸入數(shù)據(jù)
float?allMoney?=?0; //總金額
int?day?=?0; //天數(shù)
String[]?takePerson; //載人車名
String[]?takeGoods; //載貨車名
int?loadNumber?=?0; //總載人數(shù)
float?ladenNumber?=?0; //總載貨數(shù)
//創(chuàng)建各個(gè)對(duì)象
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("歡迎使用答答租車系統(tǒng):");
System.out.println("您是否要搭車:1是?0否");
inputbuf?=?input.nextInt();
if(inputbuf?==?1){
//打印車輛信息
System.out.println("您可租車的類型和價(jià)格表:");
System.out.println("序號(hào)??汽車名稱???????租金????????????????????容量");
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("請(qǐng)輸入您要租車的數(shù)量:");
inputbuf?=?input.nextInt();
inputData?=?new?int[inputbuf];
takeGoods?=?new?String[inputbuf];
takePerson?=?new?String[inputbuf];
//用戶輸入車序號(hào)
for(int?i?=?0;i?<?inputbuf;i++){
System.out.println("請(qǐng)輸入第"+(i+1)+"輛車的序號(hào):");
inputData[i]?=?input.nextInt();
}
System.out.println("請(qǐng)輸入租車天數(shù):");
day?=?input.nextInt();
input.close();?
//清空數(shù)據(jù)
allMoney?=?0;
ladenNumber?=?0;
loadNumber?=?0;
for(int?i?=?0,j?=?0,z?=?0;i?<?inputData.length;i++){
//計(jì)算總載人數(shù)和總載貨數(shù),獲取載人車名和載貨車名
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("租車總價(jià)錢:"?+?allMoney);
}else{
System.out.println("再見!");
}
}
}
2016-06-16
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("東風(fēng)",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("請(qǐng)輸入要租的天數(shù)");
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("轎車品牌"+" ? ? "+"每天單價(jià)"+" ? ? ?載人量");
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("請(qǐng)輸入所需轎車的編號(hào)");
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("沒有這輛車請(qǐng)重新輸入一遍");
outPutCar(i);
}
return mannedCar[k];
}else{
System.out.println("卡車品牌"+" ? ? "+"每天單價(jià)"+" ? ? ?載貨量");
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("請(qǐng)輸入所需卡車的編號(hào)");
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("沒有這輛車請(qǐng)重新輸入一遍");
outPutCar(i);
}
return truck[k];
}
}?
public static int decideCar(){
System.out.println("請(qǐng)選擇載貨或載人,載貨請(qǐng)輸1,載人請(qǐng)輸2,并以回車結(jié)束");
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("輸入錯(cuò)誤請(qǐng)重新輸入");
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+"天的價(jià)格是1"+didi.canMoney(car,k));
}
}
2016-06-16
你看把車型放在一個(gè)引用數(shù)組里面,用的時(shí)候調(diào)用,是不是可以減少代碼量。這樣的話,包括你的打印車輛信息以及switch選擇部分都可以減少一大段代碼量。
2016-06-16
打印車輛信息部分添加父類方法,傳不同車型打印不同信息。下面case中也在父類定義一個(gè)方法,分別傳入不同值,計(jì)算出不同數(shù)據(jù)。
(拙見,也是新手)