美文网首页
如何优雅的FIzzBuzz【3、5求余的故事】

如何优雅的FIzzBuzz【3、5求余的故事】

作者: 极客123 | 来源:发表于2018-10-15 15:55 被阅读0次
package com.mo.achievements;

import java.util.*;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpRequest;


/***
 * 算法:打印1~n之间可以被3/5整除的数字,被3整除打印Fizz,被5整除打印Buzz
 * @author admin
 */
public class Test{
      public static void main(String hh[]){
          Test s = new Test();
          List newList = s.getNewList1(16);
          System.out.println(newList);
      }
      /**
       * 简单实现算法一:
       * @param n
       * @return 处理好后的集合
       * 
       * 评价:算法简单实现了需求,但可以发现,
       *                        代码并不满足java开发规范的单一职责原则:
       *                        即处理数据,又包含了对数据的存储返回
       *                        并且扩展性一般,若果想要改变返回的字符串儿
       *                        还需要修改大量代码
       */
      public List getNewList (final int n) {
        List<String> list = new ArrayList<String>();
        
        for (int i = 1; i < n; i++) {
            if ( i%15 == 0 ) {
                list.add ( "Fizz+Buzz" );
            } else if ( i%3 == 0 ) {
                list.add("_3Fizz");
            } else if ( i%5 == 0 ) {
                list.add("_5Buzz");
            } else {
                list.add(Integer.toString(i));
            }     
        }
        
        return list;
    
      }

      /**
       * 对算法抽象建模
       * @param divisor  被除数
       * @param i   当前值
       * @param returnStr 返回数据串儿
       * @return
       */
     public String controlNumber ( final int divisor ,
             final int i ,
             final String returnStr ) {
  
        return i%divisor == 0 ? returnStr : "";
        
       }
     
     /**
      * 抽象后的新方法块儿
      * @param n
      * @return
      */
     public List getNewList1 (final int n) {
        List<String> list = new ArrayList<String>();

        for (int i = 1; i < n; i++) {
            final String returnStr = controlNumber( 3, i, "Fizz" ) + controlNumber( 5, i, "Buzz" );
            if (StringUtils.isBlank(returnStr)) {
                list.add(Integer.toString(i));
            } else {
                list.add(returnStr);
            }
        }
        
        return list;
        
       }
          
}

相关文章

网友评论

      本文标题:如何优雅的FIzzBuzz【3、5求余的故事】

      本文链接:https://www.haomeiwen.com/subject/rgifzftx.html