代码中有几个问题需要修正:
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 小助理,如未能正确解答您的问题,请继续追问。 |