父類Car
package?com.imooc;
public?abstract?class?Car?{
????//定義全局變量,+m用于區(qū)分參數(shù)
????public?String?mName;
????public?int?mMoney;
????public?int?mPeopleNum;
????public?int?mThingNum;
????//定義抽象方法用于創(chuàng)建租車類型與價(jià)目表
????public?abstract?void?show();
}
子類——載人車類
package?com.imooc;
public?class?People?extends?Car?{
????//?定義構(gòu)造方法,用于保存?zhèn)鬟f進(jìn)來的name,money,peopleNum;
????public?People(String?name,?int?money,?int?peopleNum)?{
????????this.mName?=?name;//?將傳遞進(jìn)來的name參數(shù)保存在當(dāng)前對(duì)象中的mName屬性中,nName是繼承父類Car所得到的,下同
????????this.mMoney?=?money;
????????this.mPeopleNum?=?peopleNum;
????}
????public?void?show()?{
????????//?TODO?Auto-generated?method?stub
????????System.out.println(mName?+?"\t\t"?+?mMoney?+?"天/元\t\t"?+?mPeopleNum
????????????????+?"人");//?"\t"為制表符,為了讓格式更好看
????}
}
子類——載物車類
package?com.imooc;
public?class?Thing?extends?Car?{
????public?Thing(String?name,?int?money,?int?thingNum)?{
????????this.mName?=?name;//?將傳遞進(jìn)來的name參數(shù)保存在當(dāng)前對(duì)象中的mName屬性中,nName是繼承父類Car所得到的,下同
????????this.mMoney?=?money;
????????this.mThingNum?=?thingNum;
????}
????public?void?show()?{
????????//?TODO?Auto-generated?method?stub
????????System.out.println(mName?+?"\t\t"?+?mMoney?+?"天/元\t\t"?+?mThingNum
????????????????+?"噸");//?"\t"為制表符,為了讓格式更好看
????}
}
子類——皮卡類
package?com.imooc;
public?class?PeopleAndThing?extends?Car?{
????public?PeopleAndThing(String?name,?int?money,?int?peopleNum,?int?thingNum)?{
????????this.mName?=?name;//?將傳遞進(jìn)來的name參數(shù)保存在當(dāng)前對(duì)象中的mName屬性中,nName是繼承父類Car所得到的,下同
????????this.mMoney?=?money;
????????this.mPeopleNum?=?peopleNum;
????????this.mThingNum?=?thingNum;
????}
????public?void?show()?{
????????//?TODO?Auto-generated?method?stub
????????System.out.println(mName?+?"\t\t"?+?mMoney?+?"天/元\t\t"?+?mPeopleNum
????????????????+?"人,"?+?mThingNum?+?"噸");//?"\t"為制表符,為了讓格式更好看
????}
}
函數(shù)主入口
package?com.imooc;
import?java.util.Scanner;//導(dǎo)入工具類Scanner用于輸入數(shù)據(jù)
public?class?Main?{
????public?static?void?main(String[]?args)?{
????????Car[]?cars?=?{?new?People("奧迪A4",?500,?4),?new?People("馬自達(dá)",?400,?4),
????????????????new?PeopleAndThing("皮卡雪6",?450,?4,?2),
????????????????new?People("金龍",?800,?20),?new?Thing("松花江",?400,?4),
????????????????new?Thing("依維柯",?1000,?20)?};//?用多態(tài)的方式初始化對(duì)象,并將對(duì)象保存在數(shù)組cars里
????????????????????????????????????????????????//?new+構(gòu)造方法(參數(shù))?=?對(duì)象
????????System.out.println("歡迎使用答答租車系統(tǒng)!您是否要租車:");
????????System.out.println("Y?是/?N?否");
????????Scanner?scanner?=?new?Scanner(System.in);?//?創(chuàng)建Scanner對(duì)象
????????????????????????????????????????????????????//?,并將地址傳給引用類型變量scanner
????????String?input?=?scanner.next();?//?將輸入的值傳給新定義的String類型的input
????????/**
?????????*?判斷輸入的值,如果是其他數(shù)則一直循環(huán),是Y跳出循環(huán),輸入N結(jié)束程序
?????????*/
????????while?(true)?{
????????????if?(input.equals("Y")?||?input.equals("y"))?{
????????????????System.out.println("序號(hào)\t\t汽車名稱\t\t租金\t\t容量");
????????????????for?(int?i?=?0;?i?<?cars.length;?i++)?{//?通過遍歷cars數(shù)組來訪問對(duì)象
????????????????????System.out.print(i?+?1?+?"\t\t");//?創(chuàng)建序號(hào),注意用print而不是println
????????????????????cars[i].show();//?調(diào)用各個(gè)對(duì)象的show()方法以顯示菜單
????????????????}
????????????????break;
????????????}?else?if?(input.equals("N")?||?input.equals("n"))?{
????????????????System.out.println("歡迎下次光臨!");
????????????????System.exit(0);
????????????}?else?{
????????????????System.out.println("輸入有誤,請(qǐng)重新輸入");
????????????????input?=?scanner.next();//?重新將輸入的值賦給input
????????????}
????????}
????????System.out.println("請(qǐng)輸入租車的數(shù)量:");
????????int?nums?=?scanner.nextInt();//?定義nums保存車輛數(shù)量
????????int?sumPeople?=?0;
????????int?sumThing?=?0;
????????int?sumMoney?=?0;//一天的總金額
????????int?sp?=?0;//?可載人車的數(shù)量
????????int?st?=?0;//?可載物車的數(shù)量
????????String[]?choicePeopleCarName?=?new?String[nums];//?可載人車的名字?jǐn)?shù)組
????????String[]?choiceThingCarName?=?new?String[nums];//?可載物車的名字?jǐn)?shù)組
????????Car[]?choiceCars?=?new?Car[nums];//?定義初始化數(shù)組用于保存被選中的車輛對(duì)象
????????for?(int?i?=?0;?i?<?nums;?i++)?{
????????????System.out.println("請(qǐng)輸入車輛序號(hào):");
????????????int?num?=?scanner.nextInt();//?定義num保存車輛序號(hào)
????????????/**
?????????????*?判斷車輛序號(hào)的正確性,如果有誤,則使這次循環(huán)無效
?????????????*/
????????????if(num?>?6?||?num?<=?0){
????????????????System.out.println("輸入有誤,請(qǐng)輸入正確的車輛序號(hào)!");
????????????????num?=?scanner.nextInt();
????????????????i--;
????????????????continue;
????????????}
????????????choiceCars[i]?=?cars[num?-?1];//?num-1是因?yàn)樾蛱?hào)沒有0,而數(shù)組有
????????????if?(choiceCars[i]?instanceof?People
????????????????????||?choiceCars[i]?instanceof?PeopleAndThing)?{
????????????????choicePeopleCarName[sp]?=?choiceCars[i].mName;
????????????????sp++;
????????????????sumPeople?+=?choiceCars[i].mPeopleNum;
????????????}
????????????if?(choiceCars[i]?instanceof?Thing
????????????????????||?choiceCars[i]?instanceof?PeopleAndThing)?{
????????????????choiceThingCarName[st]?=?choiceCars[i].mName;
????????????????st++;
????????????????sumThing?+=?choiceCars[i].mThingNum;
????????????}
????????????sumMoney?+=?choiceCars[i].mMoney;
????????}
????????System.out.println("請(qǐng)輸入租車天數(shù):");
????????int?days?=?scanner.nextInt();
????????scanner.close();//?關(guān)閉輸入流
????????System.out.println(">>>>>>>>>>>>>>>>>賬單<<<<<<<<<<<<<<<<<<");
????????System.out.println("您所租車的總數(shù)量為:"?+?nums);
????????System.out.println("您所租的總天數(shù)為:"?+?days);
????????System.out.println("可載人車輛為:");
????????for?(int?i?=?0;?i?<?sp;?i++)?{
????????????System.out.print(choicePeopleCarName[i]?+?"?");
????????}
????????System.out.println("可載人數(shù)為:"?+?sumPeople);
????????System.out.println("可載物車輛為:");
????????for?(int?i?=?0;?i?<?st;?i++)?{
????????????System.out.print(choiceThingCarName[i]?+?"?");
????????}
????????System.out.println("可載物數(shù)為:"?+?sumThing);
????????System.out.println("總金額為:"?+?(sumMoney?*?days));
????}
}
2016-05-16
String[]?choicePeopleCarName?=?new?String[nums];//?可載人車的名字?jǐn)?shù)組
String[]?choiceThingCarName?=?new?String[nums];//?可載物車的名字?jǐn)?shù)組
你的這兩個(gè)數(shù)組,存車輛名字的時(shí)候是遍歷選中的車輛,每個(gè)名字都存進(jìn)去,輸出的時(shí)候也是將的存進(jìn)去的所有名字按序輸出一遍
所以當(dāng)你選了2輛相同的車子,名字就重復(fù)了。
2016-05-16
不好意思,沒看出來,多調(diào)試幾遍程序吧