在给定的汽车手动风挡玻璃雨刷程序的基础上,对程序进行重构(Refactoring),使得程序可以对功能进行扩展。

输入格式:
输入共2行,第一行为一个整型数字,取值范围为[1,2],其中1代表表1所描述的雨刷系统,2代表表2所描述的雨刷系统;第二行为若干个用一个或多个空格分开且以数字0结束的整型数字,取值范围为[1,4],其中1代表控制杆升档操作、2代表控制杆降档操作、3代表刻度盘升刻度操作、4代表刻度盘降刻度操作、0代表操作结束(输入时只要遇到0即认为输入结束)。

输出格式:
程序的输出行数根据每一次对控制杆/刻度盘操作次数而定,每一次对控制杆/刻度盘进行了操作,则输出一行数据。格式为:操作类型/控制杆当前档位/刻度盘当前刻度/雨刷当前速度 其中,操作类型共四种,分别为Lever up、Lever down、Dial up、Dial down;控制杆当前档位显示中文内容,例如停止、间歇、低速、高速、超高速(表2);刻度盘当前刻度显示为数值,例如1、2、3、4、5(4、5见表2);雨刷当前速度显示为整型数值。

输入样例:
在这里给出一组输入。例如:

1
1 1 1 2 3 2 4 3 3 1 2 0

输出样例:
在这里给出相应的输出。例如:

Lever up/间歇/1/4
Lever up/低速/1/30
Lever up/高速/1/60
Lever down/低速/1/30
Dial up/低速/2/30
Lever down/间歇/2/6
Dial down/间歇/1/4
Dial up/间歇/2/6
Dial up/间歇/3/12
Lever up/低速/3/30
Lever down/间歇/3/12

想半天发现源码在文件里

import java.util.Scanner;
public class Main {public static void main(String[] args){int choice = 0;Scanner input = new Scanner(System.in);choice = input.nextInt();String[] strings = null;int[] ints=null;//根据不同的档位要求进行换挡if (choice==1) {strings=new String[]{"停止","间歇","低速","高速"};ints=new int[]{1,2,3};}else if (choice==2){strings=new String[]{"停止","间歇","低速","高速","超高速"};ints=new int[]{1,2,3,4,5};}else {System.out.println("Wrong Format");System.exit(0);}Lever lever = new Lever(1);Dial dial = new Dial(1);Brush brush = new Brush(0);//此处传入对应不同档位所允许的最大值lever.setMod(strings.length);dial.setMod(ints.length);//Agent agent = new Agent(lever,dial,brush);choice= input.nextInt();while(choice != 0){switch(choice){case 1://Lever upagent.getLever().leverUp();System.out.print("Lever up/");break;case 2://Lever downagent.getLever().leverDown();System.out.print("Lever down/");break;case 3://Dial upagent.getDial().dialUp();System.out.print("Dial up/");break;case 4://Dial downagent.getDial().dialDown();System.out.print("Dial down/");break;case 0://TerminateSystem.exit(0);}if (choice>=1&&choice<=4){agent.dealSpeed();//Get brush’s speedSystem.out.println(strings[agent.getLever().getPos()-1]+"/"+ints[agent.getDial().getPos()-1]+"/"+agent.getBrush().getSpeed());}choice = input.nextInt();}}
}
class Lever {private int pos;//档位private int mod;public Lever(){}public Lever(int pos){this.pos = pos;}public int getPos() {return pos;}public void setMod(int mod) {this.mod = mod;}//升档public void leverUp() {if(this.pos < mod){this.pos ++;}}//降档public void leverDown(){if(this.pos > 1){this.pos --;}}
}
class Dial {private int pos;//刻度private int mod;public Dial(){}public Dial(int pos){this.pos = pos;}public int getPos() {return pos;}public void setMod(int mod) {this.mod = mod;}//升刻度public void dialUp() {if(this.pos < mod){this.pos ++;}}//降刻度public void dialDown(){if(this.pos > 1){this.pos --;}}
}
class Brush {private int speed;public Brush(){}public Brush(int speed){this.speed = speed;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}
}
//为了减小实体类耦合性,采用中介模式,设计Agent代理类
class Agent {//聚合型类设计private Lever lever;private Dial dial;private Brush brush;public Agent(){}public Agent(Lever lever,Dial dial,Brush brush){this.lever = lever;this.dial = dial;this.brush = brush;}public Lever getLever() {return lever;}public void setLever(Lever lever) {this.lever = lever;}public Dial getDial() {return dial;}public void setDial(Dial dial) {this.dial = dial;}public Brush getBrush() {return brush;}public void setBrush(Brush brush) {this.brush = brush;}//主要业务逻辑:根据控制杆档位、刻度盘刻度计算雨刷摆动速度public void dealSpeed() {int speed = 0;switch (this.lever.getPos()) {case 1://停止speed = 0;break;case 2://间歇switch (this.dial.getPos()) {case 1://刻度1speed = 4;break;case 2://刻度2speed = 6;break;case 3://刻度3speed = 12;break;case 4:speed = 15;break;case 5:speed = 20;break;}break;case 3://低速speed = 30;break;case 4://高速speed = 60;break;case 5:speed = 90;break;}this.brush.setSpeed(speed);}
}

7-25 雨刷程序功能扩展设计 (100 分)相关推荐

  1. dw网页插入java小程序_DW网页设计100例35:构建Java插入模块

    Java 是一种程序设计语言, Java applet ( Java 小程序)是在 Java 的基础上演变而成的.能够嵌入在网页中的.可以执行一定小任务的应用程序. 20060407140110aa1 ...

  2. c 实现走迷宫流程图_c语言迷宫问题程序功能介绍.设计思路.数据结构设计及用法说明程序结构(流程图).各模块的功能及程序说明....

    满意答案 qiniy808451 2014.01.06 采纳率:40%    等级:13 已帮助:8084人 原来也做过,以下是写的源代码,里面有部分注释,应该能看懂,可以运行.总结的话,把代码写进去 ...

  3. 100分程序员的8个习惯

    这篇文章其实来自于后台粉丝的一个问题:"在程序员的职业生涯初期,哪些习惯是应该从一开始就养成并保持住的?" 我不是最适合回答这个问题的人,但是作为一个技术出身的媒体人,有义务提供自 ...

  4. 微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)

    1.用户需求 优惠券功能有: 1.后台可以设置优惠券和查看已发出优惠券的状态 2.平台自动给新用户发放优惠劵,或者手动给某些用户发放优惠券 3.用户在小程序中手动领取优惠券 4.用户中心新增" ...

  5. linux usb3 转hdmi,USB TYPE-C转HDMI+PD3.0+USB3.0/USB3.1多功能扩展坞设计方法和设计电路...

    多口Type-c to HDMI + PD20V Charging + USB3.1 Type-A拓展坞方案设计主要是由台湾安格AG9311MCQ这款芯片来实现的.多口多功能的TYPE-C扩展坞主要用 ...

  6. 微信小程序:字体设计符号组合多功能微信小程序源码

    这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以小编就 ...

  7. USB Type-C转HDMI+USB3.0+PD快充方案扩展坞设计方案资料|带PD快充USB-C转HDMI+USB3.0多功能扩展坞电路参考|多功能扩展坞设计资料

    ALGOLTEK(安格) AG9311是一款高度集成的解决方案,通过USB Type-C将视频和音频从DisplayPort  alternate mode传输到HDMI输出,它可以轻松的将USB T ...

  8. 编写一个Java应用程序,该应用程序包括2个类:Print类和主类E。Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的 立方和等于这个三位数本身,如

    **编写一个Java应用程序,该应用程序包括2个类:Print类和主类E.Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的 立方和等于这个三位数本身 ...

  9. 基于微信小程序的免费小说阅读平台小程序的设计与实现 毕业设计 毕设源码(1)小程序功能

    小程序功能截图

最新文章

  1. 【TX2】安装NVIDIA SDK Manager(JetPack 4.6)后,下载kernel和u-boot源码
  2. 每天导航超4亿公里,百度地图整合AI功能
  3. python-66:BS4实例--下载BS4官方文档
  4. 乔布斯当年是这样面试我的,你能挺到哪一步?
  5. 详解vue组件的is特性:限制元素动态组件
  6. Codeforces Gym 100676G Training Camp 状压dp
  7. 如何导出NK.bin中的内容
  8. SYDTEK OTA 蓝牙升级功能实现 附带Demo
  9. 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc
  10. 谷歌:. apk 成为历史!
  11. 发送get请求php,如何利用PHP发送GET请求
  12. 解决pytorch安装过程中下载总是出错的问题
  13. 写给程序员和UI--Android的切图标准
  14. 修改jupyter notebook的默认工作目录
  15. 三次握手与accept()函数
  16. Java基础知识点总结归纳,超级全面!(2021版)
  17. Boost电路硬件设计实例
  18. 网易云阅读页面html代码,网易云阅读网页端资讯阅读器设计总结
  19. 苹果手机屏幕尺寸_Apple 苹果 iPhone SE2智能手机屏幕测评报告 「Soomal」
  20. 怎样拆卸惠普微型计算机,HP Compaq 8200 Elite USDT微机拆机给风扇加油

热门文章

  1. 2021年安徽高考英语口试成绩查询,2021高考英语口语考试成绩
  2. elementui进度条如何设置_vue.js+ElementUI实现进度条提示密码强度效果
  3. Serverless Devs 的官网是如何通过 Serverless Devs 部署的?
  4. Flink on Zeppelin 系列之:Yarn Application 模式支持
  5. 高德智慧景区随身听播放器框架设计与实现
  6. 事务隔离级别,看这一篇就够了
  7. 深入理解 Flutter 的编译原理与优化
  8. 《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约
  9. JavaWeb课程复习资料——中文乱码上下文处理
  10. Java工程师知识图谱