编程道场之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();
}
}


不知道这样子重构是否有缺陷,希望大家评论一下,从哪方面评论都可以,谢谢!
...全文
195 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_20062767 2016-04-11
  • 打赏
  • 举报
回复
Divisor类消除了魔鬼数。
qq_20062767 2016-04-10
  • 打赏
  • 举报
回复
我也在考虑要不要把Divisor类给删了,感觉有点过度设计。希望大家给点意见。指出更多的缺点。
冰心的小屋 2016-04-10
  • 打赏
  • 举报
回复
写在一个类上就能搞定的事,弄那多类有何用,Divisor类有些鸡肋 欢迎光临我的博客 http://happyshome.cn

51,397

社区成员

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

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