目录

  • 第1题
  • 第2题
  • 第3题
  • 第4题

今天是学习Java的第十九天
4道练习题

第1题

题目:

1、多态练习1
笔记本支持用户使用电池 (Battery) 和交流电(AcPower)两种方式进行供电。使用多态性输出目前笔记本的电源供电情况“XX供电中…”

运行结果:

代码如下:

package work1;public abstract class PoweredBy {public abstract void getPower();
}
package work1;public class AcPower extends PoweredBy {@Overridepublic void getPower() {System.out.println("交流电供电中。。。。");}
}
package work1;public class Battery extends PoweredBy {@Overridepublic void getPower() {System.out.println("电池供电中。。。。");}}
package work1;public class Laptop {public void charge(PoweredBy pb) {pb.getPower();}}
package work1;public class Test {public static void main(String[] args) {Laptop lt = new Laptop();System.out.println("IBM笔记本:");lt.charge(new Battery());System.out.println("hp笔记本:");lt.charge(new AcPower());}
}

第2题

题目:

2、多态练习2
使用多态模拟计算器加减乘除 父类:计算类 方法:计算 子类:加法类 减法类 乘法类 除法类 子类重写父类计算方法 创建各对象,进行测试

运行结果:

代码如下:

package work2;public abstract class Calculator {protected double num1;protected double num2;protected String opt;public Calculator() {}public Calculator(double num1, double num2, String opt) {super();this.num1 = num1;this.num2 = num2;this.opt = opt;}public double getNum1() {return num1;}public void setNum1(double num1) {this.num1 = num1;}public double getNum2() {return num2;}public void setNum2(double num2) {this.num2 = num2;}public String getOpt() {return opt;}public void setOpt(String opt) {this.opt = opt;}public abstract void cal();
}
package work2;public class Addition extends Calculator {public Addition() {}public Addition(double num1, double num2, String opt) {super(num1, num2, opt);}@Overridepublic void cal() {double result = num1 + num2;System.out.println(num1 + "+" + num2 + "=" + result);}}
package work2;public class Subtraction extends Calculator {public Subtraction() {}public Subtraction(double num1, double num2, String opt) {super(num1, num2, opt);}@Overridepublic void cal() {double result = num1 - num2;System.out.println(num1 + "-" + num2 + "=" + result);}}
package work2;public class Multiplication extends Calculator {public Multiplication() {}public Multiplication(double num1, double num2, String opt) {super(num1, num2, opt);}@Overridepublic void cal() {double result = num1 * num2;System.out.println(num1 + "*" + num2 + "=" + result);}}
package work2;public class Division extends Calculator {public Division() {}public Division(double num1, double num2, String opt) {super(num1, num2, opt);}@Overridepublic void cal() {double result = num1 / num2;System.out.println(num1 + "/" + num2 + "=" + result);}}
package work2;public class Test {public static void main(String[] args) {System.out.println("计算器");Calculator c1 = new Addition(3, 5, "+");c1.cal();Calculator c2 = new Subtraction(12, 7, "-");c2.cal();Calculator c3 = new Multiplication(8, 9, "*");c3.cal();Calculator c4 = new Division(9, 3, "/");c4.cal();}}

第3题

题目:

3、多态练习3 Instrument
小明喜欢乐器, 如果他有3万块钱,他就买一架钢琴 如果他有8000块钱,他就买一部吉他, 如果他还不到1000,就先买个口琴。 元旦晚会,他将使用自己的乐器演奏。 试用多态模拟此过程。 public 乐器 buy(int money)

运行结果:

代码如下:

package work3;public abstract class Instrument {public abstract void play();}
package work3;public class Piano extends Instrument {@Overridepublic void play() {System.out.println("弹钢琴。。。");}}
package work3;public class Guitar extends Instrument {@Overridepublic void play() {System.out.println("弹吉他。。。");}}
package work3;public class Harmonica extends Instrument {@Overridepublic void play() {System.out.println("吹口琴。。。");}}
package work3;public class BuyInstrument {private int money;public BuyInstrument() {}public BuyInstrument(int money) {super();this.money = money;}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}public Instrument buy() {Instrument ist = null;if (money >= 30000) {ist = new Piano();} else if (money >= 8000 && money < 30000) {ist = new Guitar();} else if (money < 1000) {ist = new Harmonica();}return ist;}
}
package work3;public class Test {public static void main(String[] args) {int money1 = 9000;// 大于8000元System.out.println("若有" + money1 + "元");BuyInstrument bi = new BuyInstrument(money1);bi.buy().play();System.out.println("---------------------");int money2 = 40000;// 大于30000元System.out.println("若有" + money2 + "元");BuyInstrument bi2 = new BuyInstrument(money2);bi2.buy().play();System.out.println("---------------------");int money3 = 500;// 不到1000元System.out.println("若有" + money3 + "元");BuyInstrument bi3 = new BuyInstrument(money3);bi3.buy().play();}}

第4题

题目:

运行结果:

代码如下:

/*** 车辆类:是一个父类* */
package work4;public class Vechile {protected String no;// 车牌号protected String model;// 车型protected int usageTime;// 使用时间protected double dailyRent;// 日租金protected int state;// 状态:0表示可租,1表示待还public Vechile() {}public Vechile(String no, String model, int usageTime, double dailyRent) {super();this.no = no;this.model = model;this.usageTime = usageTime;this.dailyRent = dailyRent;}public String getNo() {return no;}public void setNo(String no) {this.no = no;}public String getModel() {return model;}public void setModel(String model) {this.model = model;}public int getUsageTime() {return usageTime;}public void setUsageTime(int usageTime) {this.usageTime = usageTime;}public double getDailyRent() {return dailyRent;}public void setDailyRent(double dailyRent) {this.dailyRent = dailyRent;}public int getState() {return state;}public void setState(int state) {this.state = state;}public void showInfo() {System.out.println("车牌号:" + this.no);System.out.println("车型:" + this.model);System.out.println("使用时间:" + this.usageTime);System.out.println("日租金:" + this.dailyRent);}}
/*** 小汽车类:是一个子类* */
package work4;public class Car extends Vechile {public Car() {}public Car(String no, String model, int usageTime, double dailyRent) {super(no, model, usageTime, dailyRent);}@Overridepublic void showInfo() {super.showInfo();}}
/*** 卡车类:是一个子类* */
package work4;public class Truck extends Vechile {private double load;// 载重public Truck() {}public Truck(String no, String model, int usageTime, double dailyRent, double load) {super(no, model, usageTime, dailyRent);this.load = load;}public double getLoads() {return load;}public void setLoads(double load) {this.load = load;}@Overridepublic void showInfo() {super.showInfo();System.out.println("载重:" + this.load);}}
/*** 数据操作类* */
package work4;import java.util.Scanner;public class VechileDao {private Vechile[] vs;public VechileDao() {// 只有无参构造vs = new Vechile[20];// 使用无参构造来初始化}public Vechile[] getVs() {return vs;}public void setVs(Vechile[] vs) {this.vs = vs;}public Vechile getVechile() {// 创建一辆车Scanner input = new Scanner(System.in);Vechile v = null;System.out.println("请输入要创建的车(小汽车/卡车):");String select = input.next();if ("小汽车".equals(select)) {System.out.println("请输入车牌号:");String select2 = input.next();System.out.println("请输入使用时间(年):");int select3 = input.nextInt();System.out.println("请输入日租金(元):");double select4 = input.nextDouble();v = new Car(select2, "小汽车", select3, select4);}if ("卡车".equals(select)) {System.out.println("请输入车牌号:");String select2 = input.next();System.out.println("请输入使用时间(年):");int select3 = input.nextInt();System.out.println("请输入日租金(元):");double select4 = input.nextDouble();System.out.println("请输入载重(吨):");double select5 = input.nextDouble();v = new Truck(select2, "卡车", select3, select4, select5);}return v;}public boolean putInStorage() {// 入库for (int i = 0; i < vs.length; i++) {if (vs[i] == null) {// 找到空位置Vechile v = getVechile();// 创建车辆if (v != null) {// 创建车辆成功vs[i] = v;// 放入vs[i].setState(0);// 状态改为可租return true;} else {// 创建车辆失败return false;// 放回false,入库失败}}}return false;}public boolean rentVechile(String no) {// 租车Scanner input = new Scanner(System.in);for (int i = 0; i < vs.length; i++) {// 遍历一遍车库if (vs[i] != null && vs[i].getNo().equals(no) && vs[i].getState() == 0) {// 下标不空 并且车牌号一致 并且状态为可租System.out.println("请输入要租的天数:");int days = input.nextInt();// 存放输入的天数Vechile v = null;// 存放通过车牌号找到的车for (int j = 0; j < vs.length; j++) {// 通过车牌找到车if (vs[j] != null && vs[j].getNo().equals(no)) {v = vs[j];}}System.out.println("车牌号为" + no + "的" + v.getModel() + days + "天的租金为:" + calRent(v, days));vs[i].setState(1);// 状态改为待还return true;// 租车成功}}return false;// 租车失败}public boolean returnVechile(String no) {// 还车for (int i = 0; i < vs.length; i++) {if (vs[i] != null && vs[i].getNo().equals(no) && vs[i].getState() == 1) {// 下标不空 并且车牌号一致 并且状态为待还vs[i].setState(0);return true;// 还车成功}}return false;// 还车失败}public double calRent(Vechile v, int days) {// 计算租金if (days >= 1 && days <= 30) {// 若租期小于等于30天,小汽车和卡车的租金计算方式一样return v.getDailyRent() * days;} else if (days > 30) {// 若租期大于30天if (v.getModel().equals("小汽车")) {// 若要租的是小汽车return v.getDailyRent() * 30 + v.getDailyRent() * 1.1 * (days - 30);// 返回计算的租金}if (v.getModel().equals("卡车")) {// 若要租的是卡车int[] loads = TruckLoad(days);// 创建一个数组,存放输入的卡车30天后的载重数据,例如loads[0]存放的是第31天的租金int sum = 0;// 记录30后的租金和for (int i = 1; i <= days - 30; i++) {// 计算卡车30天后的租金sum += v.getDailyRent() + loads[i - 1] / 10 * v.getDailyRent();// 30天后卡车的租金分为基础日租金+载重量租金}return v.getDailyRent() * 30 + sum;// 返回总租金}}return -1;// 异常情况,表示天数输入错误}public int[] TruckLoad(int days) {// 输入卡车30天后的载重数据Scanner input = new Scanner(System.in);int[] loads = new int[days - 30];// 这个数组存放卡车30后的载重数据for (int i = 1; i <= days - 30; i++) {// 遍历30后的每一天System.out.println("请输入卡车第" + (30 + i) + "天的载重量");int select = input.nextInt();loads[i - 1] = select;// 输入数据}return loads;// 将数组返回}public void showInfo() {// 显示待租车辆信息boolean flag = false;for (int i = 0; i < vs.length; i++) {if (vs[i] != null && vs[i].getState() == 0) {// 下标不空 并且状态为0vs[i].showInfo();// 显示信息flag = true;// true表示显示过待租车辆System.out.println();}}if (!flag) {// 若没有显示过待租车辆,说明没有车辆可租System.out.println("车库里没有车了,请尽快将新车入库");}}public void showPending() {// 显示待还车辆信息boolean flag = false;for (int i = 0; i < vs.length; i++) {if (vs[i] != null && vs[i].getState() == 1) {// 下标不空 并且状态为0vs[i].showInfo();flag = true;System.out.println();}}if (!flag) {System.out.println("所有车都在车库,没有在外的车");}}}
/*** 显示类* */
package work4;import java.util.Scanner;public class VechileView {private VechileDao ve;public VechileView() {ve = new VechileDao();// 使用无参构造来初始化}public void showInfo() {// 打印可租车辆ve.showInfo();}public void showPending() {// 打印待还车辆ve.showPending();}public void putInStorage() {// 入库boolean flag = ve.putInStorage();if (flag) {System.out.println("入库成功");} else {System.out.println("入库失败");}}public void rentVechile() {// 租车Scanner input = new Scanner(System.in);System.out.println("请输入要租的车辆的车牌号:");String no = input.next();boolean flag = ve.rentVechile(no);if (flag) {System.out.println("租车成功");} else {System.out.println("租车失败");}}public void returnVechile() {// 还车Scanner input = new Scanner(System.in);System.out.println("请输入要还的车辆的车牌号:");String no = input.next();boolean flag = ve.returnVechile(no);if (flag) {System.out.println("还车成功");} else {System.out.println("还车失败");}}public void menu() {Scanner input = new Scanner(System.in);int select;do {System.out.println("\n-----欢迎来到汽车租赁系统-----");System.out.println("\t1、查询可租车辆");System.out.println("\t2、查询待还车辆");System.out.println("\t3、新车入库");System.out.println("\t4、租车");System.out.println("\t5、还车");System.out.println("\t6、退出系统");System.out.println("------------------------------");System.out.println("请输入您的选择:");select = input.nextInt();switch (select) {case 1:showInfo();break;case 2:showPending();break;case 3:putInStorage();break;case 4:rentVechile();break;case 5:returnVechile();break;case 6:System.out.println("退出成功");System.exit(0);}} while (select != 6);}
}
/*** 测试类* */
package work4;public class Test {public static void main(String[] args) {VechileView vv = new VechileView();vv.menu();}}

学习java随堂练习-20220624相关推荐

  1. 学习java随堂练习-20220621

    目录 第1题 第2题 第3题 第4题 第5题 今天是学习Java的第十六天 5道练习题 第1题 题目: 1.定义一个方法,获取传入的邮箱地址的用户名 public String getUsername ...

  2. 学习java随堂练习-20220616

    学习Java的第十三天 第1题 第2题 第3题 第4题 第5题 第6题 第7题 今天是学习Java的第十三天 7道练习题 第1题 题目: 1.输入月份,输出季节 运行结果: 代码如下: /*** 1. ...

  3. 学习java随堂练习-20220614

    学习Java的第十一天 第1题 第2题 第3题 第4题 第5题 今天是学习Java的第十一天 5道练习题 第1题 题目: 1.定义狗类 属性:昵称,品种,健康值(int) 方法:吃,玩飞盘 定义测试类 ...

  4. 学习java随堂练习-20220609

    学习Java的第八天 第1题 第2题 第3题 第4题 第5题 今天是学习Java的第八天 5道练习题 第1题 题目: 1.循环输入近6年某高校的录取分数,求出平均分和最低分 运行结果: 代码如下: / ...

  5. 学习java随堂练习-20220617

    目录 第1题 今天是学习Java的第十四天 1道练习题 第1题 题目: 运行结果: 代码如下: /*** (1) Student:描述学生类 ① 属性:学号,姓名,性别,电话 ② 方法:显示详细信息* ...

  6. 学习java随堂练习-20220623

    目录 第1题 第2题 第3题 第4题 今天是学习Java的第十八天 4道练习题 第1题 题目: 运行结果: 代码如下: package work1;public class Vehicles {pro ...

  7. 学习java随堂练习-20220610

    学习Java的第九天 第1题 第2题 第3题 今天是学习Java的第九天 3道练习题 第1题 题目: 1.一组乱序的字符序列m.b.p.f.a.u.z,请用冒泡排序算法,使之按字母表顺序排列 运行结果 ...

  8. 学习java随堂练习-20220602

    学习Java的第四天 第1题 第2题 第3题 第4题 今天是学习Java的第四天 4道练习题 第1题 题目: 运行结果: 代码如下: //从键盘输入3个数,求最大值import java.util.S ...

  9. Java学习路线图,如何学习Java事半功倍?

    作为一个初学者想掌握Java并不是很容易,Java本身是具有一定难度的,虽然说兴趣这东西可以让我们学习不累,但是有多少人学习是因为兴趣,或者有多少人知道自己的兴趣在哪?所以我很明确的告诉你学习这事本来 ...

最新文章

  1. 一堂拯救千万股民的公开课,不能错过!
  2. 一作解读:Microbiome马铃薯疮痂病与土壤微生物组关系新进展
  3. 里程碑式的数学证明,攻破著名Erdős猜想中关键障碍
  4. 用PHP代码实现简单的工厂模式,用PHP代码实现简单的工厂模式
  5. 如何玩转PDF?5款简单好用的PDF工具推荐
  6. 编程之美-寻找数组中的最大值和最小值方法整理
  7. 《音乐达人秀:Adobe Audition实战200例》——实例11 录制任意音量音乐
  8. [html] websocket可以携带cookie吗?为什么?如果可以,怎样做到呢?
  9. java中Arrays类和Math类常用API简介
  10. zs040蓝牙模块使用方法_如何使用车载蓝牙播放手机音乐的方法
  11. android 使用shell模拟触屏_Appium常用操作之「微信滑屏、触屏操作」
  12. 接口Request传参的常用注解
  13. Linux下Vivado安装流程
  14. 《C程序设计语言》笔记 目录
  15. 简单了解mouseover与mouseenter的使用场景
  16. 音乐剪辑大师/Audio Editor
  17. Dell服务器误删阵列恢复操作
  18. rdkit 化学反应ReactionFromSmarts
  19. 摸鱼技能学习-持续更新
  20. nvaicat 下载加破解教程

热门文章

  1. R︱sparkR的安装与使用、函数尝试笔记、一些案例
  2. 客户心声 | 四川省人社厅杨玉成一行充分肯定桂溪街道劳动保障工作信息化建设平台
  3. VBS 请求WebAPI接口_C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
  4. cesium两种方式鼠标移入移出实体显示提示框
  5. 数据可视化|用堆叠条形图进行对比分析
  6. 微信还可以这样玩|ItChat
  7. 玩客云当打印机服务器,再玩一次机,我把玩客云改造成了群控系统!
  8. 暗影骑士擎Pro 之 安装Ubuntu18.04 双系统 踩坑记录(一)
  9. 利用GAN来为冷启动用户生成 行为特征完成yelp数据集上,冷启动垃圾识别的问题。
  10. 【Vegas转】自信从自我欣赏开始