Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          遞歸實現類似騰訊的積分等級處理 (原創)

          由于最近做積分系統剛好需要一個類似騰訊qq等級的方式:比如一個太陽等級A表示1000分,一個月亮B表示800分,另外一個星星C表示100分;則若用戶的積分為2950則是AABC表示即可,若用戶積分為1950則用ABC即可,若用戶積分為2150則用AAC即可,若用戶積分為1150則用AC即可,以此類推,可以用遞歸來解決這類問題,代碼如下
          import java.util.ArrayList;
          import java.util.List;

          public class BeanShellDemo {

              
          static StringBuffer sb = new StringBuffer();

              
          /**
               * point表示用戶的總積分,levellist表示積分等級列表;<br>
               * 在本例子中需要說明的是積分等級列表是要按順序的
               * 
          @param point
               * 
          @param leverlist
               * 
          @return
               
          */

              
          public static String getMyLand(int point, List levellist) {

                  
          int starnum = 0;
                  
          int leftpoint = 0;
                  
          int maxlevel = Integer.parseInt(levellist.get(levellist.size() - 1)
                          .toString());
          //列表中的最大等級
                  int minlevel = Integer.parseInt(levellist.get(0).toString());//列表中的最小等級

                  
          if(levellist.size() > 0 && point< minlevel){
                      
          return "積分不夠最小等級,則默認為最低的等級"+minlevel;
                  }
          else
                  
          if (levellist.size() > 0 && point >= minlevel) {    //當用戶積分小于最小等級值則不做處理

                      
          if (point < maxlevel && levellist.size() > 0// 小于最大等級則
                          levellist.remove(levellist.size() - 1);     // 將當前list中的最大等級移除 
                          leftpoint = point;                          //(注意因為例子中的list是由小到大排序的,亂順則要另外處理)
                      }
           else {
                          starnum 
          = point / maxlevel;                 //取商 比如280/6 = 46
                          leftpoint = point % maxlevel;               //取模 比如280%6 = 4
                          sb.append("" + starnum + "個等級為" + maxlevel + "的頭銜" + "#");
                      }

                      getMyLand(leftpoint, levellist);
                  }


                  
          return sb.toString();
              }


              
          public static void main(String[] args) {

                  
          int leverarray[] = 501003005001000 };
                  List
          <Integer> levellist = new ArrayList<Integer>();
                  
          for (int i = 0; i < leverarray.length; i++{
                      levellist.add(leverarray[i]);
                  }
                  
                  
          int userpoint = 20;
                  
          int userpoint2 = 2190;
                  System.out.println(getMyLand(userpoint, levellist));
                  System.out.println(getMyLand(userpoint2, levellist));

              }

          }



          執行結果如:
          積分不夠最小等級,則默認為最低的等級50
          有2個等級為1000的頭銜#有1個等級為100的頭銜#有1個等級為50的頭銜#

          通過其他方法對返回的串做處理即可,有好方法的朋友歡迎溝通!!

          posted on 2008-01-15 23:40 都市淘沙者 閱讀(495) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 延吉市| 永春县| 手游| 道真| 灌阳县| 七台河市| 喀喇| 海门市| 荣昌县| 鄂托克前旗| 景谷| 苍山县| 和平区| 镶黄旗| 新建县| 石楼县| 唐河县| 明光市| 云和县| 准格尔旗| 宜君县| 临清市| 邳州市| 连南| 饶平县| 霍山县| 井研县| 章丘市| 富源县| 全椒县| 阿勒泰市| 洞口县| 同心县| 台安县| 资源县| 天柱县| 临沧市| 阆中市| 从江县| 吴川市| 奎屯市|