Java分页计算入门级讲解

JAVA分页算法

分页计算总页数的思想:向上取整(小数部分均不为0,整数部分直接加1,最后得到整数结果)

举个简单的例子:现在有101个鸡蛋,需要放入筐中,一个筐可以放10个鸡蛋,

那么101/10=10.1,我们就会需要11个筐(为避免看错把以下等式的修饰词加上括号)

11筐 = 10个(装满鸡蛋的)筐 + (装0.1筐鸡蛋的)1个筐

也就是说但凡多出一点,哪怕是0.0000000……1,我们都需要再多一个筐,

即结果需要向上取整。

举例说明向上取整:

4.000 向上取整结果 4 (小数部分为000,均为0,可直接转整数为4)

4.001 向上取整结果 5(小数部分为001,直接整数部分+1转整数为5)

明白了这些之后来看代码:

  @Test
    public void testComputPate() {

        int total = 101;//总数
        int pageSize = 10;//每页显示数
        int totalPage;//总页数

        int currentPage = 1;//当前页数
        //本页起始序号(从0开始)
        int start = (currentPage - 1) * pageSize;
        //本页起始序号
        int end = start + pageSize;

        //计算总页数方法一(推荐):
        totalPage = (total + pageSize - 1) / pageSize;
        System.out.println("方法一得到的总页数:" + totalPage);
        /* 理解:
           1  <=  total / pageSize 的余数  <=  pageSize - 1
           这里需要注意,因为java中,整数除以整数结果小数部分是直接抛弃的,也就是结果是向下取整的,
           所以直接计算 total / pageSize 得到的结果会是 10 ,而不是11(用装鸡蛋来举例就是 筐放满才算一筐)
           先加上最大余数再运算,可以理解为,先给9个鸡蛋,只要total / pageSize有余数,那就能和这9个鸡蛋凑够一个满筐
           (纠结如果total / pageSize余数是2-9范围内,那么加上9结果范围为11-18的,可以再看下上句话,java整数除法运算结果是向下取整的,11-18个鸡蛋只能装满一个筐,那就只算一筐)
        */
        
        //计算总页数方法二:
        totalPage = (int) Math.ceil((double) total / pageSize);//Math.ceil()向上取整
        System.out.println("方法二得到的总页数:" + totalPage);
        /*
            方法二:思想其实是一样的,这里有个小坑,还是java整数相除得到的结果是向下取整的,这里可以强转成double再向下取整
        */
        System.out.println("错误结果:" + Math.ceil(total / pageSize));
        
    }

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值