|
发表于 2024-2-10 22:48:32
|
显示全部楼层
代码中有几个问题需要修正:
1. 定义List对象时,应该指定泛型类型,例如`List<Integer> aNum = new ArrayList<>();`;
2. 在条件语句中,比较两个值是否相等应使用`==`,而不是`=`;
3. 在for循环中,缺少了对`showEndPage`的判断,导致循环可能超出范围。
修正后的代码如下:
- /**
- * 此方法用于动态显示分页页码按钮的页码值
- * @param currentPage 当前页
- * @param totalSize 数据总数量
- * @param pageSize 一页要显示的数量
- * @param showNum_a 页码按钮的数量
- * @return 返回显示页码按钮中的页码值列表集合
- */
- public List<Integer> showPageButton(Integer currentPage, Integer totalSize, Integer pageSize, Integer showNum_a){
- // 存放页码按钮要显示的页码值
- List<Integer> aNum = new ArrayList<>();
- // 数据总页数
- int totalPage = (totalSize % pageSize == 0) ? totalSize/pageSize : totalSize/pageSize + 1;
- // 计算要显示的起始页码
- int showIndexPage;
- if (currentPage + showNum_a / 2 <= totalPage) {
- // 当前页在中间页的左边或正好在中间页
- showIndexPage = Math.max(currentPage - showNum_a / 2, 1);
- } else {
- // 当前页在中间页的右边,不是头部也不是尾部的情况
- showIndexPage = Math.max(totalPage - showNum_a + 1, 1);
- }
- // 计算要显示的最后一个页码值
- int showEndPage = Math.min(showIndexPage + showNum_a - 1, totalPage);
- // 将页码值添加到aNum中
- for (int i = showIndexPage; i <= showEndPage; i++) {
- aNum.add(i);
- }
- return aNum;
- }
复制代码
使用示例:
- public static void main(String[] args) {
- PaginationHelper helper = new PaginationHelper();
- List<Integer> pageButton = helper.showPageButton(4, 100, 10, 5);
- System.out.println(pageButton); // 输出:[2, 3, 4, 5, 6]
- }
复制代码
这样,就可以根据当前页、总页数、页码按钮数量等参数,动态显示分页页码按钮的页码值了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|