天天看點

分頁條中顯示數字頁碼的計算方法

摘要:在做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);

     }

 }

 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);

 }

 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+" | ");

         }

     }

 }