页码多的时候,当前页始终保持是分页条中显示的最中间那页。
public static void main(String[] args) {
calcPage(5, 20, 1);
}
/**
* 计算显示当前分页的起始页
* @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(pageNum<=(sideNum+1)){
endNum = 2*sideNum +1;
}else{
if((pageNum+sideNum)>pageCount){
endNum = pageCount;
}else{
endNum = pageNum + sideNum;
}
}
}
if(pageNum<=sideNum){
startNum = 1;
}else{
if((pageNum+sideNum)>pageCount){
startNum = pageCount - 2*sideNum;
}else{
startNum = pageNum - sideNum;
}
}
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://my.oschina.net/ski/blog/294811