编程道场之fizz buzz,重构的量度,希望大家给点评论,谢谢!

qq_20062767 2016-04-10 01:50:30
题目:
Write a program that prints the numbers from 1 to 100.
But for multiples of three print "Fizz" instead of the
number and for the multiples of five print "Buzz". For
numbers which are multiples of both three and five
print "FizzBuzz".

Sample output:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
... etc up to 100

我的编程实现如下:

public class Divisor {

public static final int ONE = 1;
public static final int TWO = 2;
public static final int THREE = 3;
public static final int FOUR = 4;
public static final int FIVE = 5;
public static final int SIVE = 6;
public static final int SEVEN = 7;
public static final int EIGHT = 8;
public static final int NINE = 9;
}

public class MyMathUtils {

//判断能否被divisor整除
public static boolean isDiviByNumber(int number, int divisor) {
if (number % divisor == 0) {
return true;
}
return false;
}

//判断同时能否被divisor1, divisor2整除
public static boolean isDiviByNumber(int number, int divisor1, int divisor2) {
Boolean result = false;
if (isDiviByNumber(number, divisor1)) {
result = isDiviByNumber(number, divisor2);
}
return result;
}

}

public class Hiker {

private static final int DIVISOR1 = Divisor.THREE;
private static final int DIVISOR2 = Divisor.FIVE;
private static final String FIZZ = "Fizz";
private static final String BUZZ = "Buzz";
private static final String FIZZBUZZ = "FizzBuzz";

public static void printNumber() {
for (int i = 1; i <= 100; i++) {
String result = getPrintResult(i, DIVISOR1, DIVISOR2);
System.out.println(result);
}
}

private static String getPrintResult(int i, int divisor1, int divisor2) {
String result = FIZZ;
if (MyMathUtils.isDiviByNumber(i, DIVISOR1, DIVISOR2)) {
result = FIZZBUZZ;
} else if (MyMathUtils.isDiviByNumber(i, DIVISOR1)) {
result = FIZZ;
} else if (MyMathUtils.isDiviByNumber(i, DIVISOR2)) {
result = BUZZ;
} else {
result = i + "";
}
return result;
}

}

public class HikerTest {

@Test
public void life_the_universe_and_everything() {
Hiker.printNumber();
}
}


不知道这样子重构是否有缺陷,希望大家评论一下,从哪方面评论都可以,谢谢!
...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_20062767 2016-04-11
  • 打赏
  • 举报
回复
Divisor类消除了魔鬼数。
qq_20062767 2016-04-10
  • 打赏
  • 举报
回复
我也在考虑要不要把Divisor类给删了,感觉有点过度设计。希望大家给点意见。指出更多的缺点。
冰心的小屋 2016-04-10
  • 打赏
  • 举报
回复
写在一个类上就能搞定的事,弄那多类有何用,Divisor类有些鸡肋 欢迎光临我的博客 http://happyshome.cn
内容概要:本文系统研究了虚拟同步发电机(VSG)在并网过程中的惯量-阻尼协同自适应控制策略,结合Simulink仿真与Matlab代码实现,深入探讨其对电网频率稳定的支撑作用。研究内容涵盖VSG的基本建模、双机并联条件下的功率精确分配、微电网黑启动过程、预同步控制技术、虚拟阻抗的引入及其对系统稳定性的影响,并通过根轨迹分析、调节系数对比等方法验证所提控制策略的有效性与鲁棒性。该工作为高比例新能源接入背景下的电力系统提供了增强惯性响应和动态稳定性的解决方案,并构建了一个完整的仿真验证平台。; 适合人群:具备电力系统分析、自动控制理论基础,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制、电力电子变换器控制及电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握虚拟同步发电机的核心运行机理与控制建模方法;② 实现VSG在并网、孤岛切换、黑启动等典型工况下的协同控制仿真;③ 分析惯量与阻尼自适应调控对系统频率动态响应的优化效果;④ 为相关课题研究、高水平论文复现或实际工程项目提供可扩展的仿真模型与技术支持。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型,逐步搭建仿真系统,重理解控制策略的设计逻辑与参数整定方法,并通过改变负载扰动、并网时机、控制器增益等工况进行对比仿真,深入掌握系统稳定性分析的关键技术与优化路径。
内容概要:本文档是PCI-SIG发布的工程变更通知(ECN),针对PCI Express Base Specification 3.1版本中的数据链路层包(DLLP)编码进行两项维护性更新。主要变更包括定义一种新的NOP DLLP(无操作数据链路层包),以支持未来硬件发送端的实现优化,并将所有已分配的DLLP类型编码统一整理至规范中的单一表格(Table 3-1),提升文档一致性与可维护性。接收端被要求在不采取任何动作的情况下丢弃NOP DLLP,且该包可携带24位任意负载用于调试或日志记录。文档明确指出此次变更不涉及硬件或软件的功能性改动,对现有系统几乎无影响。; 适合人群:从事PCI Express协议开发、验证的硬件工程师、固件开发者及测试工程师,具备一定高速接口协议基础的技术人员;; 使用场景及目标:①帮助开发人员理解DLLP编码机制及未来硬件优化方向;②为测试规范提供依据,如建议更新Link Test Specification以明确未定义编码测试用例的具体编码选择;③指导协议一致性验证过程中对非法或特殊DLLP的处理行为;; 阅读建议:此资源属于标准修订类技术文档,建议结合PCI Express Base Specification 3.1及相关测试规范对照阅读,重关注Table 3-1的更新、新增的NOP DLLP格式图(Figure 3-10a)及其在链路层处理流程中的定位,便于准确理解和实施协议要求。
内容概要:本文系统研究了在fs>fr条件下,移相混合控制LLC谐振变换器在低压增益工况下的工作特性,重探讨变频与移相结合控制策略下的模态切换规律、损耗分布特征及电压增益能力。通过Simulink搭建精确仿真模型,对变换器在不同负载与频率条件下的动态响应、软开关实现情况及能量转换效率进行深入分析,揭示了混合控制机制在拓宽增益范围、优化轻载效率方面的优势,为高频高效电源设计提供了理论依据与仿真验证支持。; 适合人群:具备电力电子与电力系统基础知识,从事开关电源、DC-DC变换器、谐振变换器拓扑研究或新能源变换系统开发的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握LLC谐振变换器在超谐振频率(fs>fr)下的混合控制机理与模态演变规律;②通过仿真分析优化低压输出时的控制参数,提升变换器在宽负载范围内的效率与稳定性;③为实际工程中高频高效电源的设计与性能提升提供仿真验证方法与理论指导; 阅读建议:建议结合文中Simulink仿真模型进行同步操作,重关注变频与移相控制的协同作用边界、关键波形(如谐振电流、电压增益曲线)的演化趋势,并结合相关文献深化对ZVS/ZCS软开关条件和谐振腔能量传递特性的理解。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧