交通工具基类
package Vehiclepackage;
public abstract class Vehicle {
private String brand;
private String color;
private int product_year;
public Vehicle(String brand, String color, int product_year) {
this.brand = brand;
this.color = color;
this.product_year = product_year;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getProduct_year() {
return product_year;
}
public void setProduct_year(int product_year) {
this.product_year = product_year;
}
public abstract String toString();
}
汽车类
package Vehiclepackage;
public class Car extends Vehicle{
private int busload;
private String carriage;
public Car(String brand, String color, int factory_year, int busload, String carriage) {
super(brand, color, factory_year);
this.busload = busload;
this.carriage = carriage;
}
public int getBusload() {
return busload;
}
public void setBusload(int busload) {
this.busload = busload;
}
public String getCarriage() {
return carriage;
}
public void setCarriage(String carriage) {
this.carriage = carriage;
}
@Override
public String toString() {
return String.format
("小汽车,品牌:%s 颜色:%s 出产年份:%d 载客量:%d人 厢数:%s",getBrand(),getColor(),getProduct_year(),getBusload(),getCarriage());
}
}
卡车类
package Vehiclepackage;
public class Truck extends Vehicle {
private double load_capacity;
public Truck(String brand, String color, int product_year, double load_capacity) {
super(brand, color, product_year);
this.load_capacity = load_capacity;
}
public double getLoad_capacity() {
return load_capacity;
}
public void setLoad_capacity(double load_capacity) {
this.load_capacity = load_capacity;
}
@Override
public String toString() {
return String.format("卡车,品牌:%s 颜色:%s 出产年份:%d 载重量:%.1f吨", getBrand(), getColor(), getProduct_year(),
getLoad_capacity());
}
}
测试类
package Vehiclepackage;
import java.util.Scanner;
public class VehicleTest {
private static Scanner input = new Scanner(System.in);
private static Vehicle[] vehicles = new Vehicle[100];
private static int vehicles_number = 0;
public static void Create(String[] arr) {
if (arr[0].equals("小汽车")) {
if (arr.length == 6) {
if (arr[3].matches("[1-9][0-9]?"))
{
if (arr[4].matches("[0-9]{4}"))
{
if (arr[5].equals("2厢") || arr[5].equals("3厢")) {
vehicles_number++;
vehicles[vehicles_number] = new Car(arr[1], arr[2], Integer.parseInt(arr[4]), Integer.parseInt(arr[3]), arr[5]);
System.out.println("创建成功\n");
System.out.println(vehicles[vehicles_number]);
System.out.println();
return;
} else {
System.out.println("第六个应为2厢或3厢");
}
} else {
System.out.println("第五个参数为出厂年份,应为四位整数");
}
} else {
System.out.println("第四个参数为载客量,应为1-20之间的整数");
}
} else {
System.out.println("参数的数目不正确,小汽车后应有五项参数");
}
System.out.println("\n创建不成功\n\n");
} else if (arr[0].equals("卡车")) {
if (arr.length == 5) {
if (arr[3].matches("[0-9.]+"))
{
if (arr[4].matches("[0-9]{4}"))
{
vehicles_number++;
vehicles[vehicles_number] = new Truck(arr[1], arr[2], Integer.parseInt(arr[4]), Double.parseDouble(arr[3]));
System.out.println("创建成功\n");
System.out.println(vehicles[vehicles_number]);
System.out.println();
return;
} else {
System.out.println("第五个参数为出厂年份,应为四位整数");
}
} else {
System.out.println("第四个参数为载重量,应为整数或小数");
}
} else {
System.out.println("参数的数目不正确,卡车后应有四项参数");
}
System.out.println("\n创建不成功\n\n");
} else
System.out.println("第一个应为小汽车或者卡车");
}
public static void Search(String[] arr)
{
int numbers = 0;
Vehicle[] temp = new Vehicle[100];
if (arr.length == 4)
{
for (int i = 1; i <= vehicles_number; i++) {
if (
((arr[0].equals("null") || (arr[0].equals("小汽车") && vehicles[i] instanceof Car) || (arr[0].equals("卡车") && vehicles[i] instanceof Truck)))
&& (arr[1].equals("null") || arr[1].equals(vehicles[i].getBrand()))
&& (arr[2].equals("null") || arr[2].equals(vehicles[i].getColor()))
&& (arr[3].equals("null") || (Integer.parseInt(arr[3])) == (vehicles[i].getProduct_year()))
)
{
numbers++;
temp[numbers] = vehicles[i];
}
}
if (numbers > 0)
{
System.out.printf("搜索到%d辆车,信息如下:\n", numbers);
for (int i = 1; i <= numbers; i++) {
System.out.println(temp[i].toString());
}
} else {
System.out.println("没有搜索到相应的交通工具");
}
}
else System.out.println("输入的参数数量不匹配,应输入四项参数");
}
public static void Menu() {
boolean go = true;
while (go == true) {
System.out.printf("%n请输入对应输入进行相应菜单操作:%n" + "1. 新增车辆%n" + "2. 查询车辆%n" + "3. 列出所有车辆%n"
+ "4. 结束程序%n");
String ch;
ch = input.nextLine();
switch (ch) {
case "1": {
while (true)
{
System.out.println(
"请输入车辆信息,示例:\n" + " 小汽车 丰田 红色 4 2007 2厢\n" + " 卡车 雷诺 红色 3.5 2008\n" + "结束新增,请输入end");
String vehicle_information = input.nextLine();
if (vehicle_information.equals("end") == true)
break;
String[] arr = vehicle_information.split("[ ]+");
Create(arr);
}
}
break;
case "2": {
while (true) {
System.out.println("请按照“类型 商标 颜色 出产年”的顺序输入条件," + "若条件为空用“null”代替,2个示例:\n" + " 小汽车 丰田 红色 2007\n"
+ " null 丰田 null null\n" + "输入end返回上级菜单");
String vehicle_information = input.nextLine();
if (vehicle_information.equals("end") == true)
break;
String[] arr = vehicle_information.split("[ ]+");
Search(arr);
}
}
break;
case "3": {
System.out.printf("目前有%d辆车,信息如下:\n", vehicles_number);
for (int i = 1; i <= vehicles_number; i++) {
System.out.println(i + ": " + vehicles[i].toString());
}
}
break;
case "4":
System.out.println(" 已成功退出程序");
go = false;
break;
default:
System.out.println("请输入1-4的整数");
}
}
}
public static void main(String[] args) {
Menu();
}
}