java中面向对象租车问题_答答租车系统-Java面向对象的学习
定义 2 个接口
载人接口 IMannedCar.java
public interface IMannedCar {
int mannedNumber();
}
载货接口 ICarryFreight.java
public interface ICarryFreight {
int carryFreightNumber();
}
定义抽线父类 Car.java,并定义两个抽象方法 name(), rental().
public abstract class Car {
public abstract String name();
public abstract int rental();
}
定义三个抽象类,继承 Car.java,并根据不同的需求实现不同的接口
PersonCar,载人汽车抽象类
public abstract class PersonCar extends Car implements IMannedCar {
}
CarryCar,载货汽车抽象类
public abstract class PersonCar extends Car implements IMannedCar {
}
PickupTruck,皮卡抽象类
public abstract class PickupTruck extends Car implements IMannedCar,ICarryFreight {
}
具体不同的汽车,实现不同的类
Audi.java,奥迪A4,载人汽车实现类
public class Audi extends PersonCar {
@Override
public int mannedNumber() {
return 4;
}
@Override
public String name() {
return "奥迪 A4";
}
@Override
public int rental() {
return 500;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载人:" + mannedNumber();
}
}
Mazada6.java,马自达6,载人汽车实现类
public class Mazada6 extends PersonCar {
@Override
public int mannedNumber() {
return 4;
}
@Override
public String name() {
return "马自达6";
}
@Override
public int rental() {
return 400;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载人:" + mannedNumber();
}
}
Xue6.java,雪6,皮卡实现类
public class Xue6 extends PickupTruck {
@Override
public int mannedNumber() {
return 4;
}
@Override
public int carryFreightNumber() {
return 2;
}
@Override
public String name() {
return "皮卡雪6";
}
@Override
public int rental() {
return 450;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载人:" + mannedNumber() + " 载货:" + carryFreightNumber();
}
}
YiWeiKe.java,依维柯,载货汽车实现类
public class YiWeiKe extends CarryCar {
@Override
public int carryFreightNumber() {
return 20;
}
@Override
public String name() {
return "依维柯";
}
@Override
public int rental() {
return 1000;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载货:" + carryFreightNumber();
}
}
SongHuaJiang.java,松花江,载货汽车实现类
public class SongHuaJiang extends CarryCar {
@Override
public int carryFreightNumber() {
return 4;
}
@Override
public String name() {
return "松花江";
}
@Override
public int rental() {
return 400;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载货:" + carryFreightNumber();
}
}
JinLong.java,金龙,载人汽车实现类
public class JinLong extends PersonCar {
@Override
public int mannedNumber() {
return 20;
}
@Override
public String name() {
return "金龙";
}
@Override
public int rental() {
return 800;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载人:" + mannedNumber();
}
}
PiCar.java,皮卡,皮卡实现类
public class PiCar extends PickupTruck {
@Override
public int mannedNumber() {
return 4;
}
@Override
public int carryFreightNumber() {
return 5;
}
@Override
public String name() {
return "皮卡";
}
@Override
public int rental() {
return 600;
}
@Override
public String toString() {
return name() + " " + rental() + "元/天 载人:" + mannedNumber()+" 载货:" + carryFreightNumber();
}
}
租车系统 RentCar
public class RentCar {
private List cars;
private List rentCars;
public void rent() {
rentCars = new ArrayList<>();
System.out.println("您可租车的类型及其价目表:");
showRentCarList();
}
private void showRentCarList() {
cars = new ArrayList<>();
Car audi = new Audi();
cars.add(audi);
Car yiweike = new YiWeiKe();
Car piCar = new PiCar();
Car songhuajiang = new SongHuaJiang();
Car mazada6 = new Mazada6();
Car xue6 = new Xue6();
Car jinlong = new JinLong();
cars.add(piCar);
cars.add(yiweike);
cars.add(songhuajiang);
cars.add(mazada6);
cars.add(xue6);
cars.add(jinlong);
if (cars != null && cars.size() > 0) {
System.out.println("序号 汽车名称 租金 容量");
for (int i = 0; i < cars.size(); i++) {
System.out.println(i + 1 + " " + cars.get(i).toString());
}
int carsNumber = 0;
boolean isCardNumber = false;
System.out.println("请输入您要租赁车辆的数量:");
while (!isCardNumber) {
try {
carsNumber = inNumber();
if (carsNumber <= 0) {
isCardNumber = false;
continue;
}
isCardNumber = true;
} catch (ParseErrorException e) {
isCardNumber = false;
System.out.println("请输入您要租赁车辆的数量:");
}
}
for (int j = 0; j < carsNumber; j++) {
System.out.println("请输入第" + (j + 1) + "辆车的序号:");
boolean isSerial = false;
while (!isSerial) {
int serial = 0;
try {
serial = inNumber();
} catch (ParseErrorException e) {
isSerial = false;
System.out.println("请正确的输入车辆需要");
continue;
}
if (serial <= 0 serial > cars.size()) {
System.out.println("请正确的输入车辆需要");
isSerial = false;
continue;
}
rentCars.add(cars.get(serial - 1));
isSerial = true;
}
}
statisticsCars();
} else {
System.out.println("暂时没有可供租赁的车辆!");
return;
}
}
public int inNumber() throws ParseErrorException {
Scanner scanner1 = new Scanner(System.in);
try {
String trim = scanner1.next().trim();
return Integer.parseInt(trim);
} catch (Exception e) {
throw new ParseErrorException(e.getMessage());
}
}
private void statisticsCars() {
List carryName = new ArrayList<>();
List personName = new ArrayList<>();
int manned = 0;
int carryFreight = 0;
int rently = 0;
if (rentCars != null && rentCars.size() > 0) {
for (int i = 0; i < rentCars.size(); i++) {
Car car = rentCars.get(i);
rently += car.rental();
if (car instanceof PersonCar) {
manned += ((IMannedCar) car).mannedNumber();
personName.add(car);
} else if (car instanceof CarryCar) {
carryFreight += ((ICarryFreight) car).carryFreightNumber();
carryName.add(car);
} else {
manned += ((IMannedCar) car).mannedNumber();
carryFreight += ((ICarryFreight) car).carryFreightNumber();
carryName.add(car);
personName.add(car);
}
}
System.out.println("您租赁了:" + rentCars.size() + "辆车,总金额:" + rently);
if (carryFreight != 0) {
System.out.println("总载货量:" + carryFreight);
System.out.print("车辆类型为:");
for (Car car : carryName) {
System.out.print(car.name() + " ");
}
System.out.println();
}
if (manned != 0) {
System.out.println("总载人量:" + manned);
System.out.print("车辆类型为:");
for (Car car : personName) {
System.out.print(car.name() + " ");
}
System.out.println();
}
} else {
System.out.println("租赁信息有误");
}
}
}
答答租车系统入口:
public class DadaRentCar {
public static void main(String[] args) {
System.out.println("欢迎使用答答租车系统:");
System.out.println("您是否要租车:1-是,0-否");
boolean isRent = true;
while (isRent) {
Scanner scanner = new Scanner(System.in);
String trim = scanner.next().trim();
if (trim.equals("1")) {
RentCar rentCar = new RentCar();
rentCar.rent();
} else if (trim.equals("0")) {
isRent = false;
System.out.println("再见!");
} else {
System.out.println("请输入正确的指令");
}
}
}
}
java中面向对象租车问题_答答租车系统-Java面向对象的学习相关推荐
- java中接口什么时候用_我什么时候应该在java中使用接口?
在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...
- java中final是啥意思_(转)深入理解Java中的final关键字
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- java中appletviewer是什么意思_自动生成供AppletViewer运行Java Applet的HTML文件
这几天开始自学Java,搭建Eclipse作为开发环境,发现实在太智能了,貌似对学习无益.于是搜了下,另外搭建了EditPlus上的简易Java开发环境,确实比较适合学习,不足之处是没法配置比较方便的 ...
- java中b的平方表示_第七届蓝桥杯Java B——四平方和
四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 ...
- java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现
package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...
- [转载] java中对数组进行排序_如何在Java中对数组排序
参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...
- java中对数组进行排序_如何在Java中对数组排序
java中对数组进行排序 Java Array is like a container that can hold a fixed number of the same type of items, ...
- javaweb JAVA JSP幼儿园事务管理系统jsp幼儿早教中心网站系统 Java幼儿园网站源码
javaweb JAVA JSP幼儿园事务管理系统jsp幼儿早教中心网站系统 Java幼儿园网站源码 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房, ...
- 如下哪个是Java中的合法自定义标识符_吉大13春《面向对象程序设计》在线作业答案...
吉大13春<面向对象程序设计>在线作业答案 2013-03-21 01:03:14 259 有学员问关于吉大13春<面向对象程序设计>在线作业答案的题目的参考答案和解析,具体如 ...
- java中super(aa bb cc)_面向对象程序设计(Java)答案
[单选题]下列哪个类声明是正确的( ) [单选题]Java中,在如下所示的Test类中,共有( )个构造方法. public class Test{ private int x; public Tes ...
最新文章
- 【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )
- 微软官方Windows Server 2008实战攻略系列
- mybatis-plus代码生成器简易使用
- OpenCV学习笔记三-Mat数据结构
- BUAA_OO_第二单元作业总结
- saveOrUpdate的使用
- java chatat delete,StringBuffer deleteCharAt(int index)
- iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector
- 谷歌大牛Jeff Dean撰文:深度学习研究的黄金十年
- 还原html默认打开方式,Win7旗舰版64位系统下如何还原文件默认打开方式
- 学生宿舍管理系统(前端部分)
- 笔记本电脑不显示WIFI列表无法连接到网络的解决办法
- html——简单文章发布html页面及富文本编辑器wangEditor的使用
- 技术贴 | 视频清晰度由什么决定
- VideoStream流媒体(VOD视频点播)系统平台
- 干货面试教程!java识别图片验证码
- Python群发短信
- 蚂蚁金服6面,成功唬住面试官拿了36K
- 未知参数休哈特matlab,一种确定某类工作的人的极限工作时间的方法
- [附源码]java毕业设计大学城二手书交易网站
热门文章
- 华为鸿蒙还会不会推出,华为如果把鸿蒙独立出来,让小米、魅族和蓝绿厂参股进来,会不会超越安卓?...
- python collections(容器)模块
- 奇妙华为3c手机, 出现安装未成功问题。
- NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
- 超越 EfficientNet与MobileNetV3,NeurIPS 2020 微软NAS方向最新研究
- 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源
- 黑白照片修复亦可「如假包换」,华人学者提出实例感知着色新方法
- 近期机器学习竞赛汇总~总奖池超三百万人民币!
- YOLACT++:目前最热门的实时实例分割开源库
- 不要错过!MICCAI 2019 所有论文完整下载