编程道场之fizz buzz重构
2016-04-10 14:22
232 查看
题目:
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
我的分析与实现如下:
可能我的实现与你的不同,希望有经验的你可以对我的实现提出一些改进的地方,或者指出我的不足之处,十分感谢!!!
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(); } }
可能我的实现与你的不同,希望有经验的你可以对我的实现提出一些改进的地方,或者指出我的不足之处,十分感谢!!!
相关文章推荐
- Matlab并行编程方法
- Base64加密解密实现
- java中如何遍历实体类的属性和数据类型以及属性值
- Eclipse快捷键 10个最有用的快捷键
- c/c++内存分配方式
- matlab实现分水岭算法处理图像分割
- 《Web编程入门经典》
- C\C++字符操作
- c#实现内存映射文件共享内存
- LeetCode 318 -Maximum Product of Word Lengths ( JAVA )
- c++虚函数和纯虚函数的区别
- C语言异常处理机制
- 关于JavaWeb中 Response返回中文乱码的问题
- python:获取mysql版本
- java bitmap 实现
- Matlab size函数
- c语言文件操作
- laravel小知识
- matlab reshape函数
- Ubuntu Server 安装 FTP 服务 和 SSH 服务