經典面試題--FizzBuzz的面向物件版本
阿新 • • 發佈:2019-02-11
題目描述,給一個數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的倍數,會打印出空格。 但從輸出結果上看不出來。就不改了。