经典面试题--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的倍数,会打印出空格。 但从输出结果上看不出来。就不改了。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值