只用到了一個(gè)主類,汽車的子類沒(méi)寫。用構(gòu)造方法確定他們的類別。不過(guò)后面判斷用了很多for循環(huán)。感覺(jué)有點(diǎn)累贅,有哪里可以優(yōu)化嗎!
package dadazu;
/*
?* 1:聲明一個(gè)車輛類
?*/
public class MainVehicle {
int number;
String name;
int rent;
int per;
double weight;
public int getPer() {
return per;
}
public void setPer(int per) {
this.per = per;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
MainVehicle(){
}
MainVehicle(int number,String name,int rent,int per){
this.number = number;
this.name = name;
this.rent = rent;
this.per = per;
}
MainVehicle(int number,String name,int rent,double? weight){
this.number = number;
this.name = name;
this.rent = rent;
this.weight = weight;
}
MainVehicle(int number,String name,int rent,int per,double weight){
this.number = number;
this.name = name;
this.rent = rent;
this.weight = weight;
this.per = per;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRent() {
return rent;
}
public void setRent(int rent) {
this.rent = rent;
}
public String getinfo(){
if(weight==0){
return number+"\t"+name+"\t"+rent+"元/天"+"\t"+"載人:"+per+"人";
}
else if(per==0){
return number+"\t"+name+"\t"+rent+"元/天"+"\t"+"載貨:"+weight+"噸";
}
else{
return number+"\t"+name+"\t"+rent+"元/天"+"\t"+"載人:"+per+"人"+" "+"載貨:"+weight+"噸";
}
}
}
、、、、、、、、
//運(yùn)行主類
package dadazu;
import java.util.Scanner;
public class Vehicle {
public static void main(String[] args){
int a,b,day;
int q=0,w=0;
int sper=0;
double swei = 0;
double price=0;
Scanner in = new Scanner(System.in);
System.out.println("歡迎使用噠噠租車系統(tǒng)!");
System.out.println("您是否要租車:1是 0否");
a = in.nextInt();
if(a==1){//a=1進(jìn)入租車系統(tǒng)!
System.out.println("您可租車的類型及其價(jià)目表如下:");
MainVehicle veh[] = new MainVehicle[6];//初始化租車對(duì)象
veh[0] = new MainVehicle(1, "奧迪A4", 500, 4);
veh[1] = new MainVehicle(2, "馬自達(dá)6", 400, 4);
veh[2] = new MainVehicle(3, "皮卡雪6", 450, 4,2.0);
veh[3] = new MainVehicle(4, "金龍", 800, 20);
veh[4] = new MainVehicle(5, "松花江", 400, 4.0);
veh[5] = new MainVehicle(6, "蘭博基尼", 1000, 20.0);
System.out.println("序號(hào)"+"\t"+"汽車名稱"+"\t"+"租金"+"\t"+"容量"+"\t");
for(int i=0;i<veh.length;i++){//打印租車信息
System.out.println(veh[i].getinfo());
}
System.out.println("請(qǐng)輸入您要租汽車的數(shù)量:");
b = in.nextInt();
int c[] = new int[b];//聲明一個(gè)汽車數(shù)量大小的數(shù)組
for(int i=0;i<b;i++){//選擇車輛序號(hào),存入到數(shù)組里面
System.out.println("請(qǐng)輸入第"+(i+1)+"輛車的序號(hào):");
c[i] = in.nextInt();
}
System.out.println("請(qǐng)輸入租車天數(shù):");
day = in.nextInt();
System.out.println();
System.out.println();
System.out.println();
System.out.println("您的賬單:");
MainVehicle pers[] = new MainVehicle[b];//聲明一個(gè)汽車數(shù)量大小的數(shù)組對(duì)象
for(int i=0, k=0;i<veh.length;i++){//將選擇的序號(hào)的車輛對(duì)象存入到pers[]
for(int j=0;j<c.length;j++){
if(i+1==c[j]){
pers[k]=veh[i];
k++;
}
}
}
for(int i=0;i<pers.length;i++){//遍歷選擇的車輛對(duì)象
if(pers[i].getPer()!=0){
q++;//統(tǒng)計(jì)載人的車輛數(shù)
}
if(pers[i].getWeight()!=0){
?
w++;//統(tǒng)計(jì)載貨的車輛數(shù)
}
}
System.out.println(q+" -- "+w);
MainVehicle spers[] = new MainVehicle[q];//聲明載人的車輛對(duì)象數(shù)組
MainVehicle wu[] = new MainVehicle[w];//聲明載貨的車輛對(duì)象數(shù)組
for(int j=0,i=0;j<pers.length;j++){//遍歷pers[],找到載人的車輛賦值給新的spers[]
if(pers[j].getPer()!=0){
spers[i]=pers[j];
i++;
}
}
for(int j=0, i=0;j<pers.length;j++){//遍歷pers[],找到載貨的車輛賦值給新的wu[]
if(pers[j].getWeight()!=0){
wu[i]=pers[j];
i++;
}
}
System.out.println("***可載人的車有:");
for(int i=0;i<spers.length;i++){
System.out.print(spers[i].getName()+"\t");
sper = spers[i].getPer()+sper;
price = spers[i].getRent()*day+price;
}
System.out.println("共載人:"+sper);
System.out.println("***載貨的車有:");
for(int i=0;i<wu.length;i++){
System.out.print(wu[i].getName()+"\t");
swei = wu[i].getWeight()+swei;
if(wu[i].getWeight()!=0&&wu[i].getPer()==0)
price = wu[i].getRent()*day+price;
}
System.out.println("共載貨:"+swei+"噸");
System.out.println("租車總價(jià)格:"+price+"元");
}
else if(a==0){
System.out.println("退出系統(tǒng)!");
System.exit(-1);
}
else{
System.out.println("輸入有誤!,正在退出系統(tǒng)");
System.exit(-1);
}
}
}
2018-11-13
還是建議加子類比較好,因?yàn)槿绻髮懸粋€(gè)自動(dòng)添加車的功能而不是手動(dòng)的話,那么人數(shù)肯定是整數(shù),載重如果也是一個(gè)整數(shù),別人又寫的是"20",而不是"20.0",按照這種寫法是肯定會(huì)把貨車新建成一個(gè)客車的實(shí)例。
其次就是一個(gè)代碼重復(fù)的問(wèn)題,如果你寫了之類的話后面的幾個(gè)循環(huán)是完全不用寫的,完全可以這樣:
打印出來(lái)的結(jié)果是一樣的,但是只有一次遍歷(循環(huán))。
2018-11-10
我覺(jué)得寫得不錯(cuò)了,建議你用集合框架寫,可以省很多代碼。