gpt4 book ai didi

java - java中的分页

转载 作者:行者123 更新时间:2023-11-29 06:41:45 26 4
gpt4 key购买 nike

我现在被困了几天,试图开发一种在搜索引擎中管理结果页面的方法(就像谷歌分页系统)。

我有结果总数、当前页(从 1... 到...最后一页)以及每页的结果数(假设每页 10 个)。

在JSP结果页面的底部,我想显示页面的表格数据如下:

假设搜索引擎返回了 470 个结果。- 基于“每页 10 个结果”,我们总共有 47 页 (470/10)

这就是我要显示的内容

"previous 2 3 4 5 6 7 8 9 10 Next"> 当我们点击第 10 页时,应该发生以下情况:

"previous 5 6 7 8 9 10 11 12 13 14 Next"如果点击第14页,则:

“上一个 9 10 11 12 13 14 15 16 17 18 下一个”等等...

我已经设法做到了以下几点

public class Test {

public static int [] getIntervalNumberPages(
final int pNumberHits,
final int pNumberTotalHits,
final int pNumberCurrentPage,
final int pNumberResultsPerPage) {

// Page interval
final int NB_PAGES_INTERVAL = 10;

// Initialise table
int [] vResult = new int [0];

// If no results found or if number of documents per page = 0
if (pNumberHits != 0 && pNumberResultsPerPage != 0) {
// Total number of pages
int vNumberTotalPages = (int) java.lang.Math.ceil(pNumberTotalHits / (double) pNumberResultsPerPage);
// First number of the list
int vPremierNumero = 0;

// Last number of the list
int vDernierNumero = 0;
// managing multiples
if (pNumberCurrentPage >= NB_PAGES_INTERVAL && pNumberCurrentPage % NB_PAGES_INTERVAL == 0) {
vPremierNumero = (pNumberCurrentPage / NB_PAGES_INTERVAL - 1) * NB_PAGES_INTERVAL + 1;
vDernierNumero = java.lang.Math.min(vNumberTotalPages, (pNumberCurrentPage / NB_PAGES_INTERVAL - 1) * NB_PAGES_INTERVAL + NB_PAGES_INTERVAL);
} else {
vPremierNumero = pNumberCurrentPage / NB_PAGES_INTERVAL * NB_PAGES_INTERVAL + 1;
vDernierNumero = java.lang.Math.min(vNumberTotalPages, pNumberCurrentPage / NB_PAGES_INTERVAL * NB_PAGES_INTERVAL + NB_PAGES_INTERVAL);
}
vResult = new int [vDernierNumero - vPremierNumero + 1];
// Fill in table
for (int vCpt = 0; vCpt < vResult.length; vCpt++) {
vResult [vCpt] = vPremierNumero + vCpt;
}
}

return vResult;
}
}

但是我的代码是这样工作的:

“1 2 3 4 5 6 7 8 9 10 下一步”如果我点击第 10 页 >“上一个 11 12 13 14 15 16 17 18 19 20 下一个”等等

有人可以帮我吗??

最佳答案

您的问题只是简单的数学问题。您重新编号的方式与您描述的要求不符。

 vPremierNumero = (pNumberCurrentPage / NB_PAGES_INTERVAL - 1) * NB_PAGES_INTERVAL

所以让我们插入一些数字

 pNumberCurrentPage = 10
NB_PAGES_INTERVAL = 10

vPremierNumero = 10/9 * 10 = 100/9 = 11

这就是为什么你的第一页是 11。你想将它移动 NB_PAGES_INTERVAL/2 以便你点击的数字在范围的中间。

关于java - java中的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com