感觉写了好多代码,很多地方都可以优化,但是我刚学,不知道怎么修改, 希望各位可以提供点思路,感谢!以下是代码:
//父类:
package Dada;
public abstract class Vehicle {
public int price;
public int people;
public String name;
public double load;
abstract void info();
}子类:奥迪
package Dada;
public class Audi extends Vehicle {
public final int price = 500;
public final int people = 4;
public final int id =1;
public final String name = "奥迪A4";
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载人:"+people+"人");
}
}子类:马自达
package Dada;
public class Mazda extends Vehicle {
public final int price = 400;
public final int people = 4;
public final int id =2;
public final String name = "马自达6";
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载人:"+people+"人");
}
}子类:皮卡雪6
package Dada;
public class Pika extends Vehicle {
public final int price = 450;
public final int people = 4;
public final int id =3;
public final String name = "皮卡雪6";
public final double load = 2;
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载人:"+people+"人"+"载货"+load+"吨");
}
}子类:金龙
package Dada;
public class Jinlong extends Vehicle {
public final int price = 800;
public final int people = 20;
public final int id =4;
public final String name = "金龙";
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载人:"+people+"人");
}
}子类:松花江
package Dada;
public class Songhuajiang extends Vehicle {
public final int price = 400;
public final double load = 4;
public final int id =5;
public final String name = "松花江";
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载货:"+load+"吨");
}
}子类:依维柯
package Dada;
public class Yiweike extends Vehicle {
public final int price = 1000;
public final double load = 20;
public final int id =6;
public final String name = "依维柯";
@Override
void info() {
System.out.println(id+"."+" "+name+" "+price+"/天"+" "+"载货:"+load+"吨");
}
}测试类:
package Dada;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class test {
public static void main(String[] args){
List<Integer> data;
List<String> passengerVehicleName=new ArrayList<>();
List<String> goodsVehicleName=new ArrayList<>();
System.out.println("欢迎使用答答租车系统:");
System.out.println("您是否要租车? 1 是, 0 否");
Scanner select = new Scanner(System.in);
int answer = select.nextInt();
int dayNum;
int money =0;
int people=0;
double goods =0;
switch (answer){
case 1:
info();
break;
case 0:
System.out.println("不租车你点进来干嘛,别闹!");
break;
default:
System.out.println("你好调皮,再见。");
}
data = rentNumber();
dayNum = data.get(data.size()-1);
data.remove(data.size()-1);
for (int i: data){
switch (i){
case 1:
Audi audi = new Audi();
money= money+audi.price*dayNum;
people= people+audi.people;
passengerVehicleName.add(audi.name);
break;
case 2:
Mazda mazda = new Mazda();
money = money+mazda.price*dayNum;
people = people+mazda.people;
passengerVehicleName.add(mazda.name);
break;
case 3:
Pika piKa = new Pika();
money=money+piKa.price*dayNum;
people=people+piKa.people;
goods=goods+piKa.load;
passengerVehicleName.add(piKa.name);
goodsVehicleName.add(piKa.name);
break;
case 4:
Jinlong jinLong = new Jinlong();
money = money + jinLong.price*dayNum;
people = people+jinLong.people;
passengerVehicleName.add(jinLong.name);
break;
case 5:
Songhuajiang songHuaJiang = new Songhuajiang();
money = money+songHuaJiang.price*dayNum;
goods = goods+songHuaJiang.load;
goodsVehicleName.add(songHuaJiang.name);
break;
case 6:
Yiweike yiWeiKe = new Yiweike();
money = money + yiWeiKe.price*dayNum;
goods = goods + yiWeiKe.load;
goodsVehicleName.add(yiWeiKe.name);
break;
}
}
System.out.println("您的账单:");
if (people!=0){
System.out.println("***可载人的车有:");
for (String i:passengerVehicleName
) {
System.out.print(i+" ");
}
System.out.println("共载人:"+people+"人");
System.out.println();
}
if (goods!=0){
System.out.println("***可载货的车有:");
for (String i:goodsVehicleName
) {
System.out.print(i+" ");
}
System.out.println("共载货:"+goods+"吨");
System.out.println();
}
System.out.println("***租车总价格为"+money+"元");
}
static void info(){
System.out.println("您可租车的类型及价目表如下:");
System.out.println("序号 汽车名称 租金 容量");
Vehicle Audi = new Audi();
Audi.info();
Vehicle Mazda = new Mazda();
Mazda.info();
Vehicle Pika = new Pika();
Pika.info();
Vehicle Jinlong = new Jinlong();
Jinlong.info();
Vehicle Songhuajiang = new Songhuajiang();
Songhuajiang.info();
Vehicle Yiweike = new Yiweike();
Yiweike.info();
}
public static List rentNumber(){
List<Integer> selection = new ArrayList<>();
System.out.println("请输入您要租车的数量:");
Scanner rn = new Scanner(System.in);
int number = rn.nextInt();
for (int i = 1; i<= number; i++){
System.out.println("请输入第"+i+"辆车的序号:");
Scanner num = new Scanner(System.in);
int a = num.nextInt();
selection.add(a);
}
System.out.println("请输入租车天数:");
Scanner data = new Scanner(System.in);
int dayNum = data.nextInt();
selection.add(dayNum);
return selection;
}
}不需要写这么多的子类, 可以用不同的参数实例化父类来获得不同的汽车的实例.