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

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

只用到了一個主類,汽車的子類沒寫。用構造方法確定他們的類別。不過后面判斷用了很多for循環。感覺有點累贅,有哪里可以優化嗎!

package dadazu;

/*

?* 1:聲明一個車輛類

?*/

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+"噸";

}

}

}

、、、、、、、、

//運行主類

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("歡迎使用噠噠租車系統!");

System.out.println("您是否要租車:1是 0否");

a = in.nextInt();

if(a==1){//a=1進入租車系統!

System.out.println("您可租車的類型及其價目表如下:");

MainVehicle veh[] = new MainVehicle[6];//初始化租車對象

veh[0] = new MainVehicle(1, "奧迪A4", 500, 4);

veh[1] = new MainVehicle(2, "馬自達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("序號"+"\t"+"汽車名稱"+"\t"+"租金"+"\t"+"容量"+"\t");

for(int i=0;i<veh.length;i++){//打印租車信息

System.out.println(veh[i].getinfo());

}

System.out.println("請輸入您要租汽車的數量:");

b = in.nextInt();

int c[] = new int[b];//聲明一個汽車數量大小的數組

for(int i=0;i<b;i++){//選擇車輛序號,存入到數組里面

System.out.println("請輸入第"+(i+1)+"輛車的序號:");

c[i] = in.nextInt();

}

System.out.println("請輸入租車天數:");

day = in.nextInt();

System.out.println();

System.out.println();

System.out.println();

System.out.println("您的賬單:");

MainVehicle pers[] = new MainVehicle[b];//聲明一個汽車數量大小的數組對象

for(int i=0, k=0;i<veh.length;i++){//將選擇的序號的車輛對象存入到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++){//遍歷選擇的車輛對象

if(pers[i].getPer()!=0){

q++;//統計載人的車輛數

}

if(pers[i].getWeight()!=0){

?

w++;//統計載貨的車輛數

}

}

System.out.println(q+" -- "+w);

MainVehicle spers[] = new MainVehicle[q];//聲明載人的車輛對象數組

MainVehicle wu[] = new MainVehicle[w];//聲明載貨的車輛對象數組

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("租車總價格:"+price+"元");

}

else if(a==0){

System.out.println("退出系統!");

System.exit(-1);

}

else{

System.out.println("輸入有誤!,正在退出系統");

System.exit(-1);

}

}

}


正在回答

2 回答

還是建議加子類比較好,因為如果之后寫一個自動添加車的功能而不是手動的話,那么人數肯定是整數,載重如果也是一個整數,別人又寫的是"20",而不是"20.0",按照這種寫法是肯定會把貨車新建成一個客車的實例。

其次就是一個代碼重復的問題,如果你寫了之類的話后面的幾個循環是完全不用寫的,完全可以這樣:

String?keChe?=?"";
int?zaiRen?=?0;
String?huoChe?=?"";
double?zaiWu?=?0;
//?如果想要加入皮卡
String?piKa?=?"";
double?zongJia?=?0;????//?總價

for?(Car?car:?c)?{
????if?(car?instanceof?KeChe)?{
????????keChe?+=?car.name?+?"?";
????????zaiRen?+=?car.per;
????}?else?if?(car?instanceof?HuoChe)?{
????????huoche?+=?car.name?+?"?";
????????zaiWu?+=?car.weight;
????}?else?if?(car?instanceof?PiKa)?{
????????piKa?+=?car.name?+?"?";
????????zaiRen?+=?car.per;
????????zaiWu?+=?car.weight;
????}
????zongJia?+=?car.price;
}

System.out.println("***可載人的車有:");
System.out.println(keChe);
//?后面直接代印載人多少,貨車和皮卡同樣的道理進行打印

打印出來的結果是一樣的,但是只有一次遍歷(循環)。

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

我覺得寫得不錯了,建議你用集合框架寫,可以省很多代碼。

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

舉報

0/150
提交
取消

只用到了一個主類,汽車的子類沒寫。用構造方法確定他們的類別。不過后面判斷用了很多for循環。感覺有點累贅,有哪里可以優化嗎!

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

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

幫助反饋 APP下載

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

公眾號

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