只用到了一個主類,汽車的子類沒寫。用構造方法確定他們的類別。不過后面判斷用了很多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);
}
}
}
2018-11-13
還是建議加子類比較好,因為如果之后寫一個自動添加車的功能而不是手動的話,那么人數肯定是整數,載重如果也是一個整數,別人又寫的是"20",而不是"20.0",按照這種寫法是肯定會把貨車新建成一個客車的實例。
其次就是一個代碼重復的問題,如果你寫了之類的話后面的幾個循環是完全不用寫的,完全可以這樣:
打印出來的結果是一樣的,但是只有一次遍歷(循環)。
2018-11-10
我覺得寫得不錯了,建議你用集合框架寫,可以省很多代碼。