写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。
很简单的题目,很多种解法,我选择了其中一种每个分支都经过两次判断的写法:
public class Fizzbuzz {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
if (i % 5 == 0) {
System.out.println(i+":"+"fizzbuzz");
} else {
System.out.println(i+":"+ "fizz");
}
} else if (i % 5 == 0) {
System.out.println(i+":"+"buzz");
} else {
System.out.println(i);
}
}
}
当然也有1-3次判断的写法,那么这个问题为什么会比较有名呢?
应当是考虑到一个人最基本的逻辑思维能力,比如边界,公倍数的判断等等。我在写的时候,第一次手滑写成了i<100,然后又发现只输出了满足替换的数字,却没有输出普通的数字(最后一个else分支)。可想而知,看似简单的题目也是麻雀虽小五脏俱全。Talk is cheap, show me the code.
谨记。