显示效果:
[页面总数小于等于10,全部显示,当前页特殊显示]
上一页 1 2 3 4 5 6 7 8 9 10 下一页
[页面总数大于10,部分显示,当前页特殊显示]
上一页 1 2 3 … 20 下一页 [当前页面为首页时,上一页不可用]
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页[当前页面为末页时,下一页不可用]
算法提取:
0.页码显示规则:
当前页为首页时不显示上一页; 上一页 1 2 3 … 20 下一页
当前页为尾页时不显示下一页; 上一页 1 … 17 18 19 20 下一页
1.页面总数(n)<=10 {
显示全部页码:上一页 1 2 3 4 5 6 7 8 9 10 下一页
}
2.页面总数(n) > 10 {
2.1 当前页码 <= 4 {
左侧显示所有 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 2 3 … 20 下一页
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
}
2.2 当前页码 > 4 且<= 页面总数(n) - 3 {
首页 + ... + 左侧2个页码 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
}
2.3 当前页码 > 页面总数(n) - 3 {
首页 + ... + 左侧2个页面 + 当前页码 + 右侧显示所有
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页
}
}
下面我来把他修改成java语言。
[页面总数小于等于10,全部显示,当前页特殊显示]
上一页 1 2 3 4 5 6 7 8 9 10 下一页
[页面总数大于10,部分显示,当前页特殊显示]
上一页 1 2 3 … 20 下一页 [当前页面为首页时,上一页不可用]
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页[当前页面为末页时,下一页不可用]
算法提取:
0.页码显示规则:
当前页为首页时不显示上一页; 上一页 1 2 3 … 20 下一页
当前页为尾页时不显示下一页; 上一页 1 … 17 18 19 20 下一页
1.页面总数(n)<=10 {
显示全部页码:上一页 1 2 3 4 5 6 7 8 9 10 下一页
}
2.页面总数(n) > 10 {
2.1 当前页码 <= 4 {
左侧显示所有 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 2 3 … 20 下一页
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
}
2.2 当前页码 > 4 且<= 页面总数(n) - 3 {
首页 + ... + 左侧2个页码 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
}
2.3 当前页码 > 页面总数(n) - 3 {
首页 + ... + 左侧2个页面 + 当前页码 + 右侧显示所有
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页
}
}
下面我来把他修改成java语言。
001
public
class
PageTest {
002
003
004
public
static
String pageControl(
int
page,
int
count){
005
006
String strHtml =
""
;
007
008
009
if
(page >
1
){
010
011
strHtml +=
"上一页"
;
012
013
}
014
015
if
(count <=
10
){
016
017
for
(
int
i =
1
;i<=count;i++){
018
019
if
(page == i){
020
021
strHtml+=
" ["
+i+
"]"
;
022
023
}
else
{
024
025
strHtml+=
" "
+i;
026
027
}
028
029
}
030
031
}
else
{
032
033
if
(page<
4
){
034
035
for
(
int
i = page-
1
;i>
0
;i--){
036
037
strHtml+=
" "
+i;
038
039
}
040
041
strHtml+=
" ["
+page+
"]"
;
042
043
strHtml+=
" "
+(page+
1
);
044
045
strHtml+=
" "
+(page+
2
);
046
047
strHtml+=
" ..."
;
048
049
strHtml+=
" "
+count;
050
051
052
}
053
054
if
(page>
4
&& (page<=count-
3
)){
055
056
strHtml+=
" "
+
1
;
057
058
strHtml+=
" ..."
;
059
060
strHtml+=
" "
+(page-
2
);
061
062
strHtml+=
" "
+(page-
1
);
063
064
strHtml+=
" ["
+page+
"]"
;
065
066
strHtml+=
" "
+(page+
1
);
067
068
strHtml+=
" "
+(page+
2
);
069
070
strHtml+=
" ..."
;
071
072
strHtml+=
" "
+count;
073
074
075
}
076
077
if
(page>count-
3
){
078
079
strHtml+=
" "
+
1
;
080
081
strHtml+=
" ..."
;
082
083
strHtml+=
" "
+(page-
2
);
084
085
strHtml+=
" "
+(page-
1
);
086
087
strHtml+=
" ["
+page+
"]"
;
088
089
for
(
int
i = page+
1
;i<count;i++){
090
091
strHtml+=
" "
+i;
092
093
}
094
095
}
096
097
098
}
099
100
101
if
(page < count){
102
103
strHtml +=
"下一页"
;
104
105
}
106
107
108
return
strHtml;
109
110
}
111
112
113
public
static
void
main(String[] args) {
114
115
System.out.println(PageTest.pageControl(
6
,
20
));
116
117
}
118
119
}