美文网首页
如何优雅的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