1. 程式人生 > >經典面試題--FizzBuzz的面向物件版本

經典面試題--FizzBuzz的面向物件版本

題目描述,給一個數n(n>1)。從1~n-1,列印該數字,並且,如果該數字能被3整除,列印Fizz;如果能被5整除,列印Buzz,如果能被15整除,列印FizzBuzz。

傳統的寫法一般是一個for迴圈裡面巢狀4個if else判斷。能寫到這個水平算是合格了。但使用面向物件會有更好的分數。我的解法如下(java版本):

public class FizzBuzz{
    private String [] state={"","","","Fizz","","Buzz"};

    private String getState(int n, int base){
        if(n % base == 0)return state[base];
        return "";
    }

    public void printOnRange(final int bound){
        for(int i=1;i < bound;i++){
            System.out.println( i+ " "+ getState(i,3) + getState(i,5));
        }
    }
    public static void main(String[] args){
        new FizzBuzz().printOnRange(101);
    }
}

這裡用到了私有變數,私有方法,公開方法,匿名物件等特性。但也存在一個bug, 如果數字i不是3,5,15的倍數,會打印出空格。 但從輸出結果上看不出來。就不改了。