小白新手求助。試著寫了練習,輸出也成功了,但是總覺得有問題,請幫忙指正
父類
package?ddzc.imooc;
public?abstract?class?Car?{
int?num;
String?name;
int?jg;
int?zz;
int?zr;
public?int?getNum()?{
return?num;
}
public?void?setNum(int?num)?{
this.num?=?num;
}
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?int?getJg()?{
return?jg;
}
public?void?setJg(int?jg)?{
this.jg?=?jg;
}
public?int?getZz()?{
return?zz;
}
public?void?setZz(int?zz)?{
this.zz?=?zz;
}
public?int?getZr()?{
return?zr;
}
public?void?setZr(int?zr)?{
this.zr?=?zr;
}
abstract?void?kan();
}子類
package?ddzc.imooc;
//小貨車
public?class?Xh?extends?Car?{
int?num=1;
String?name="小貨車";
int?jg=400;
int?zz=5;
@Override
void?kan()?{
//?TODO?Auto-generated?method?stub
this.setNum(num);
this.setName(name);
this.setJg(jg);
this.setZz(zz);
System.out.println(getNum()+"\t"+getName()+"\t"+getJg()+"元/天\t"+"\t載重:"+getZz()+"噸");
}
}package?ddzc.imooc;
//大貨車
public?class?Dh?extends?Car?{
int?num=2;
String?name="大貨車";
int?jg=1000;
int?zz=20;
@Override
void?kan()?{
//?TODO?Auto-generated?method?stub
this.setNum(num);
this.setName(name);
this.setJg(jg);
this.setZz(zz);
System.out.println(getNum()+"\t"+getName()+"\t"+getJg()+"元/天"+"\t載重:"+getZz()+"噸");
}
}package?ddzc.imooc;
//皮卡
public?class?Pk?extends?Car?{
int?num=3;
String?name="皮卡";
int?jg=500;
int?zz=5;
int?zr=4;
@Override
void?kan()?{
//?TODO?Auto-generated?method?stub
this.setNum(num);
this.setName(name);
this.setJg(jg);
this.setZz(zz);
this.setZr(zr);
System.out.println(getNum()+"\t"+getName()+"\t"+getJg()+"元/天\t"+"\t載客:"+getZr()+"人"+"\t載重:"+getZz()+"噸");
}
}package?ddzc.imooc;
//小客車
public?class?Xk?extends?Car?{
int?num=4;
String?name="小客車";
int?jg=400;
int?zr=5;
@Override
void?kan()?{
//?TODO?Auto-generated?method?stub
this.setNum(num);
this.setName(name);
this.setJg(jg);
this.setZr(zr);
System.out.println(getNum()+"\t"+getName()+"\t"+getJg()+"元/天\t"+"\t載客:"+getZr()+"人");
}
}package?ddzc.imooc;
//大客車
public?class?Dk?extends?Car?{
int?num=5;
String?name="大客車";
int?jg=800;
int?zr=20;
@Override
void?kan()?{
//?TODO?Auto-generated?method?stub
this.setNum(num);
this.setName(name);
this.setJg(jg);
this.setZr(zr);
System.out.println(getNum()+"\t"+getName()+"\t"+getJg()+"元/天\t"+"\t載客:"+getZr()+"人");
}
}main
package?ddzc.imooc;
import?java.util.Scanner;
public?class?Imain?{
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
System.out.println("*****歡迎來到租車系統*****");
Scanner?input=new?Scanner(System.in);//輸入調用
System.out.print("想要進入租車系統請按:1;退出請按:0:");
int?a=input.nextInt();
if(a==1){
System.out.println("*****歡迎進入租車系統*****");
System.out.println("現在可選擇的車型有:");
System.out.println("序號\t車型\t價格\t\t容量");
Car?xh=new?Xh();
xh.kan();
Car?dh=new?Dh();
dh.kan();
Car?pk=new?Pk();
pk.kan();
Car?xk=new?Xk();
xk.kan();
Car?dk=new?Dk();
dk.kan();
String[]?cheXing={xh.name,dh.name,pk.name,xk.name,dk.name};
int[]?jG={xh.jg,dh.jg,pk.jg,xk.jg,dk.jg};
int[]?xiaoJi=new?int[5];
System.out.print("請輸入您需要租用幾種的車型:");
int?b=input.nextInt();
if(b>5||b<1){
System.out.print("您輸入的車型錯誤請重新輸入:");
int?i=input.nextInt();
b=i;
}
for(int?c=1;b>0&&b<6;b--){ ?
System.out.print("請輸入您需要租第"+c+"種車型:");
int?chexing=input.nextInt();
for(;chexing>5||chexing<=0;){
System.out.print("您輸入的車型錯誤請重新輸入:");
int?i=input.nextInt();
chexing=i;
}
System.out.print("請輸入您需要租的天數:");
int?tianshu=input.nextInt();
System.out.print("請輸入您需要租車的數量:");
int?shuliang=input.nextInt();
System.out.println("你要租的第"+c+"種車型為:"+cheXing[chexing-1]+"\t租車的天數為"+tianshu+"天\t租車的數量為"+shuliang+"輛");
????xiaoJi[c-1]=jG[chexing-1]*shuliang*tianshu;
System.out.println("您租車第"+c+"種車需要的租金為:"+xiaoJi[c-1]);
c++;
}
int?zongji=0;
for(int?d=0;d>=0&&d<5;d++){
zongji=zongji+xiaoJi[d];
}
System.out.println("您租車需要的總租金為:"+zongji);
}else
System.out.println("再見");
}尤其是總租金的地方。。
ps:~~就不要吐曹命名了。。。。高中開始就英語沒及過格的人?,F在連代碼都記不住。還在一邊翻小筆記一邊寫。。
請幫忙多指正。
2016-04-13
寫的不錯, 大體的效果差不多出來了, 但是面向對象的操作方式不是這么寫的.
首先你要把父類, 也就是抽象的 Car 類抽象封裝好, 比如不能 int num;, 而應該 protected int num; protected 表示只有父類內/包內/子類可以訪問, 而把共有的 getter/setter 方法寫好, 子類里完全不需要管這些屬性了, 因為繼承了, 是直接會擁有的.
然后創建一個構造方法, 表明你想以怎樣的方式創建對象, 比如父類
public?Car(int?num,?String?name,?int?jg,?int?zz,?int?zr){ ????this.num?=?num; ????this.name?=?name; ????this.jg?=?jg; ????this.zz?=?zz; ????this.zr?=?zr; }子類直接創建構造方法
public?Xh(int?num,?...){ ????super(num,?...); ????//?這里寫子類或許擁有的其他屬性,?如果沒有就忽略,?只用上面那個?super(...); }總的來說是你對這個類的繼承還差一點理解, 不過比我當年要好, 盡量使用標準英文命名, 不知道就用字典查, 不記得就寫注釋, //, 你懂的
2016-04-13
package?Test; public?abstract?class?Car?{ //定義?屬性 int?CarNum;??//車型編號 ????String?CarName;?//車型名稱 double?Priec;???//每日租金/價格 int?Busload;????//載客數量 double?Load;????//載重量 abstract?void?CarShow(); } package?Test; public?class?Buggy?extends?Car?{?//小貨車定義 static?final?int?CarNum=1; static?final?String?CarName="小貨車"; static?final?double?Priec=400; static?final?int?Busload=0; static?final?double?Load=5.0;?? void?CarShow(){ System.out.println(CarNum+"\t"+CarName+"\t"+Priec+"元/輛/天"+"\t"+Busload+"人\t"+Load+"噸"); } } package?Test; public?class?Truck?extends?Car?{ static?final?int?CarNum=2; static?final?String?CarName="大貨車"; static?final?double?Priec=1000; static?final?int?Busload=0; static?final?double?Load=15.0;? void?CarShow(){ System.out.println(CarNum+"\t"+CarName+"\t"+Priec+"元/輛/天"+"\t"+Busload+"人\t"+Load+"噸"); } } package?Test; public?class?Pickup?extends?Car?{??//定義皮卡車 static?final?int?CarNum=3; static?final?String?CarName="皮卡車"; static?final?double??Priec=500; static?final?int?Busload=3; static?final?double?Load=3.0;? void?CarShow(){ System.out.println(CarNum+"\t"+CarName+"\t"+Priec+"元/輛/天"+"\t"+Busload+"人\t"+Load+"噸"); } } package?Test; public?class?Sedan?extends?Car?{?//小客車 static?final?int?CarNum=4; static?final?String?CarName="小客車"; static?final?double?Priec=300; static?final?int?Busload=4; static?final?double?Load=0; void?CarShow(){ System.out.println(CarNum+"\t"+CarName+"\t"+Priec+"元/輛/天"+"\t"+Busload+"人\t"+Load+"噸"); } } package?Test; public?class?Bus?extends?Car?{ static?final?int?CarNum=5; static?final?String?CarName="大客車"; static?final?double?Priec=1500; static?final?int?Busload=20; static?final?double?Load=0; void?CarShow(){ System.out.println(CarNum+"\t"+CarName+"\t"+Priec+"元/輛/天"+"\t"+Busload+"人\t"+Load+"噸"); } } package?Test; import?java.util.*; public?class?RentCar?{ public?static?void?main(String[]?args){ ?RentCar.show01(); ?Scanner?input=new?Scanner(System.in);//輸入調用 ?int?inputChoose=input.nextInt(); ?int?xuanzhe01=RentCar.Legal(inputChoose,0,1);//選擇結果得到 ? ?if(xuanzhe01==1){???//進入選車租車系統 ?RentCar.show02(); ?System.out.print("請輸入您需要租用幾種的車型:"); ?????????int?CarNameChoose=input.nextInt(); ?????????int?xuanzhe02=RentCar.Legal(CarNameChoose,1,5);//選擇車型結束 ?????????int[][]?sum=new?int[xuanzhe02][3]; ????????? ???????//開始對幾類車型分別做類型及數量,天數輸入 ?????????for(int?j=1,?i=0;j<=xuanzhe02;i++,j++){??//i控制數組——j控制次數 ???????? ?//車型確定 ???????? ?do{ ???????? ?System.out.print("請輸入你選擇的第"+j+"類型車輛的序號(不要重復輸入已選型號序號):"); ???????? ?CarNameChoose=input.nextInt(); ???????? ?sum[i][0]=RentCar.Legal(CarNameChoose,1,5); ???????? ?}while(!RentCar.Repeat(CarNameChoose,?i,?sum));//確保車型不重復 ???????? ? ???????? ?//數量確定 ???????? ?System.out.print("請輸入你選擇的第"+j+"類型車型的租用數量(不超過100臺):"); ???????? ?CarNameChoose=input.nextInt(); ???????? ?sum[i][1]=RentCar.Legal(CarNameChoose,1,101); ???????? ? ???????? ?//天數確定 ???????? ?System.out.print("請輸入你選擇的第"+j+"類型車型的租用天數(不超過100天):"); ???????? ?CarNameChoose=input.nextInt(); ???????? ?sum[i][2]=RentCar.Legal(CarNameChoose,1,101); ?????????} ?//取得輸入完成,開始計算需要的數值 ???????? ?String?loadCarName=""; ???????? ?double?loadSum=0; ???????? ?String?BusCarName=""; ???????? ?int?BusSum=0; ???????? ?double?Amount=0; ?????????for(int?i=0;i<xuanzhe02;i++){ ???????? ? ???????? ?switch(?sum[i][0]){?//分類計算開始 ???????? ?case?Buggy.CarNum: ???????? ?loadCarName=loadCarName+"\t"+Buggy.CarName; ???????? ?loadSum=loadSum+Buggy.Load*sum[i][1]; ???????? ?Amount=Amount+sum[i][1]*sum[i][2]*Buggy.Priec; ???????? ?break; ???????? ?case?Truck.CarNum: ???????? ?loadCarName=loadCarName+"\t"+Truck.CarName; ???????? ?loadSum=loadSum+Truck.Load*sum[i][1]; ???????? ?Amount=Amount+sum[i][1]*sum[i][2]*Truck.Priec; ???????? ?break; ???????? ?case?Pickup.CarNum: ???????? ?loadCarName=loadCarName+"\t"+Pickup.CarName; ???????? ?loadSum=loadSum+Pickup.Load*sum[i][1]; ???????? ?BusCarName=BusCarName+"\t"+Pickup.CarName; ???????? ?BusSum=BusSum+Pickup.Busload*sum[i][1]; ???????? ?Amount=Amount+sum[i][1]*sum[i][2]*Pickup.Priec; ???????? ?break; ???????? ?case?Sedan.CarNum: ???????? ?BusCarName=BusCarName+"\t"+Sedan.CarName; ???????? ?BusSum=BusSum+Sedan.Busload*sum[i][1]; ???????? ?Amount=Amount+sum[i][1]*sum[i][2]*Sedan.Priec; ???????? ?break; ???????? ?case?Bus.CarNum: ???????? ?BusCarName=BusCarName+"\t"+Bus.CarName; ???????? ?BusSum=BusSum+Bus.Busload*sum[i][1]; ???????? ?Amount=Amount+sum[i][1]*sum[i][2]*Bus.Priec; ???????? ? ???????? ?break; ???????? ?};?? ???????? ? ?????????} ?//輸出部分 ????????System.out.println("***可載人車有\n"+BusCarName+"\t共可載:"+BusSum+"人"); ????????System.out.println("***可載貨車有\n"+loadCarName+"\t共可載:"+loadSum+"噸"); ????????System.out.println("租車總價格"+Amount+"元"); ????????System.out.println(); ? ?} ?else{?//不進入系統,退出 ?System.out.println("推出系統"); ?} } public?static??void?show01(){??//第一次顯示 System.out.println("*****歡迎來到租車系統*****"); System.out.print("想要進入租車系統請按:1;退出請按:0:"); ??????? } public?static?void?show02(){??//第二次顯示 ??System.out.println("*****歡迎進入租車系統*****"); ??????????System.out.println("現在可選擇的車型有:"); ??????????System.out.println("序號\t車型\t價格\t\t載客數\t載重數"); ??????????RentCar.Carinitshow();??//定義初始化部分 } public?static?void?Carinitshow(){?//顯示個信息 Car?Buggy=new?Buggy(); Buggy.CarShow(); Car?Truck=new?Truck(); Truck.CarShow(); Car?Pickup=new?Pickup(); Pickup.CarShow(); Car?Sedan=new?Sedan(); Sedan.CarShow(); Car?Bus=new?Bus(); Bus.CarShow(); //double[][]?CarArrye={{Buggy.CarNum,Truck.CarNum,Pickup.CarNum,Sedan.CarNum,Bus.CarNum},{Buggy.Price,Truck.Price,Pickup.Price,Sedan.Price,Bus.Price}}; } public?static?int?Legal(int?intnum,int?intmin,int?intmax){?//判斷輸入正確性,輸入不對一直輸入,知道輸入正確為止 while((intnum<intmin)||(intnum>intmax)){ System.out.print("請按提示重新輸入"+intmin+"到"+intmax+"數值"); Scanner?input=new?Scanner(System.in);//輸入調用 intnum=input.nextInt(); }; return?intnum; } public?static?boolean?Repeat(int?CarNameChoose,int?i,int?sum[][]){?//判斷是否重復選車型 boolean?CarNumfloat=true; if(i!=0){ for(int?n=0;n<i;n++){ if(CarNameChoose==sum[n][0]){ CarNumfloat=false; break; } } } return?CarNumfloat; } } //我也剛學習,花了好幾個小時做好了,復習了很多知識,哈哈! //希望對您有借鑒,還有就是你寫的邏輯我不是很清楚,沒看完,汗!