码迷,mamicode.com
首页 > 其他好文 > 详细

分页条中显示数字页码的计算方法

时间:2015-03-06 19:18:10      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:分页

摘要:在做web分页的时候,分页条中数字显示个数的计算方法。没有用现成的分页组建来做分页条。自己写了段简单的计算分页的代码。 2014-8-8 15:56:46 fix one bug. detailDesc: 使用 calcPage(4, 5, 4);将会导致分页异常。

 

 

页码多的时候,当前页始终保持是分页条中显示的最中间那页。


 public static void main(String[] args) {
     for (int i = 1; i <= 10; i++) {
         for (int j = 1; j <= i; j++) {
             calcPage(j, i, 2);
             System.out.println();
         }
         System.out.println("***********************"+i);
     }
 }

 /**
  * 计算显示当前分页的起始页
  * @param pageNum 当前页码
  * @param pageCount 总页数
  * @param sideNum 分页系数  分页条中显示几个数字页码。
  * 显示数字页码个数 = 2 * sideNum + 1
  */
 public static void calcPage(int pageNum,int pageCount,int sideNum){            
     int startNum = 0;
     int endNum = 0;

     if(pageCount<=sideNum){
         endNum = pageCount;
     }else{
         if((sideNum+pageNum)>=pageCount){
             endNum = pageCount;
         }else{
             endNum = sideNum+pageNum;
             if((sideNum+pageNum)<=(2*sideNum+1)){                  
                 if((2*sideNum+1)>=pageCount){
                     endNum = pageCount;
                 }else{
                     endNum = 2*sideNum+1;
                 }
             }else{
                 endNum = sideNum + pageNum;
             }
         }
     }

     if(pageNum<=sideNum){
         startNum = 1;
     }else{         
         if((pageNum+sideNum)>=pageCount){
             if((2*sideNum+1)>=pageCount){
                 if((pageCount - 2*sideNum)>=1){
                     startNum = pageCount - 2*sideNum;
                 }else{
                     startNum = 1;
                 }
             }else{
                 startNum = pageCount - 2*sideNum;
             }              
         }else{
             if((pageNum-sideNum)>=1){
                 startNum = pageNum - sideNum;
             }else{
                 startNum = 1;
             }              
         }
     }      
     loopOut(startNum, endNum, pageNum);
 }

 /**
  * 输出计算出来的当前分页详情
  * @param startNum
  * @param endNum
  * @param pageNum
  */
 public static void loopOut(int startNum,int endNum,int pageNum){
     for (int i = startNum; i <= endNum; i++) {         
         if(i==pageNum){
             //输出@符号,代表当前页
             System.out.print(i+"@ | ");
         }else{
             System.out.print(i+" | ");
         }
     }
 }

 

 

 

分页条中显示数字页码的计算方法

标签:分页

原文地址:http://blog.csdn.net/liuyangan2008/article/details/44101929

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!