有趣的FizzBuzz问题

写一个程序打印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.

谨记。

你可能感兴趣的:(杂记)