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 都市淘沙者 閱讀(493) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 贵德县| 铜梁县| 九江县| 绥中县| 砀山县| 旬阳县| 石屏县| 晋江市| 扎囊县| 大洼县| 应城市| 思茅市| 大足县| 伽师县| 绥棱县| 巧家县| 隆德县| 平乡县| 乌海市| 金华市| 绍兴县| 邳州市| 长春市| 阿尔山市| 舟山市| 珲春市| 故城县| 涞源县| 陆河县| 邹平县| 开封市| 镇沅| 双峰县| 山东省| 西昌市| 大丰市| 京山县| 元阳县| 乌兰县| 敦化市| 唐河县|