求大神,求!求!求助!这是个菜鸟问题,我出100分!!!

wenming12345678 2015-01-15 12:42:39
这是北大青鸟租房网站的一段分页显示的代码,
public void setNumbers(int totalPageCount){//获取展示页数集合(上一页 12345..下一页,显示页码)
if (totalPageCount>0) {
int[] numbers = new int[totalPageCount > 10?10:totalPageCount];
int k=0;
for (int i = 0; i < totalPageCount; i++) {
//控制当前页在集合的中间
if ((i >= index-(numbers.length/2-1)||i >= totalPageCount-numbers.length)) {
//就是这句if语句,只给了一半后一半想不出来啊!!!
numbers[k]=i+1;
k++;
}else if (k>=numbers.length) {
break;
}
}
this.numbers=numbers;
}
}
...全文
294 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenming12345678 2015-01-17
  • 打赏
  • 举报
回复
引用 7 楼 skyhitnow 的回复:
懒得看了,也不容易看懂,毕竟,智商不见得赶得上人家作者,还是自己写了一个,比较啰嗦,参考下吧

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

public class PageNumbers {


    public static void main(String[] args) {
        PageNumbers pageNumbers = new PageNumbers();
        pageNumbers.setNumbers(55);
        for (int i : pageNumbers.numbers) {
           
            if(i!=index)
                System.out.print("["+i+"]");
            else
             System.out.print(i);
        }
    }
    private static int index = 46;
    private int[] numbers;

    public void setNumbers(int totalPageCount) {
        if (totalPageCount > 0) {
            int[] numbers = new int[totalPageCount > 10 ? 10 : totalPageCount];
            int k;
            if (index - numbers.length / 2 <= 1) {
                k = 1;
            } else if (index+numbers.length / 2>=totalPageCount) {
                k = totalPageCount - numbers.length+1;

            } else {
                k = index - numbers.length / 2;
            }
            for (int i = 0; i < numbers.length; i++) {
                numbers[i] = k;
                k++;
            }
            this.numbers = numbers;
        }
    }

}

运行结果: [41][42][43][44][45]46[47][48][49][50]
我唯一能说的就是感谢你,太他妈好使啦,牛逼!!!!!!!100分马上给!!!
skyhitnow 2015-01-16
  • 打赏
  • 举报
回复
由于是偶数页,所以只能前五后四或者前四后五,没法完全在中间
skyhitnow 2015-01-16
  • 打赏
  • 举报
回复
懒得看了,也不容易看懂,毕竟,智商不见得赶得上人家作者,还是自己写了一个,比较啰嗦,参考下吧

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

public class PageNumbers {


    public static void main(String[] args) {
        PageNumbers pageNumbers = new PageNumbers();
        pageNumbers.setNumbers(55);
        for (int i : pageNumbers.numbers) {
           
            if(i!=index)
                System.out.print("["+i+"]");
            else
             System.out.print(i);
        }
    }
    private static int index = 46;
    private int[] numbers;

    public void setNumbers(int totalPageCount) {
        if (totalPageCount > 0) {
            int[] numbers = new int[totalPageCount > 10 ? 10 : totalPageCount];
            int k;
            if (index - numbers.length / 2 <= 1) {
                k = 1;
            } else if (index+numbers.length / 2>=totalPageCount) {
                k = totalPageCount - numbers.length+1;

            } else {
                k = index - numbers.length / 2;
            }
            for (int i = 0; i < numbers.length; i++) {
                numbers[i] = k;
                k++;
            }
            this.numbers = numbers;
        }
    }

}

运行结果: [41][42][43][44][45]46[47][48][49][50]
  • 打赏
  • 举报
回复
关注一下,。。。
wasdasdfqwer 2015-01-15
  • 打赏
  • 举报
回复
引用 4 楼 wufengui1315 的回复:
[quote=引用 3 楼 wenming12345678 的回复:] [quote=引用 2 楼 shijing266 的回复:] 这是判断了两种情况 1、当totalPageCount<=10 的时候,满足(i >= index-(numbers.length/2-1) 2、当totalPageCount>10的时候,满足 i >= totalPageCount-numbers.length
if ((i >= index-(numbers.length/2-1)||i >= totalPageCount-numbers.length)) 看这句括号,在教程里看不到后面的,其实还有,不过我的能力分析不出来,您给的两条回答我已看了,明白一点,只不过我想问就这个能满足当前页在分页显示条中排在中间吗?就是比如====上一页1.2.3.4.5.6.7.8.9.10下一页 根据上面的if可以将当前页在任何时候都设置在中间位置吗?[/quote] 刚好以前我用js写过一个分页,敲好是当前在中间的情况,可以去我的博客看看 [/quote] http://blog.csdn.net/wufengui1315/article/details/23694731 当然开始只有几页的时候就不能再中间了,页数比较多的时候,当前页在中间,然后分别是钱几页后几页
wasdasdfqwer 2015-01-15
  • 打赏
  • 举报
回复
引用 3 楼 wenming12345678 的回复:
[quote=引用 2 楼 shijing266 的回复:] 这是判断了两种情况 1、当totalPageCount<=10 的时候,满足(i >= index-(numbers.length/2-1) 2、当totalPageCount>10的时候,满足 i >= totalPageCount-numbers.length
if ((i >= index-(numbers.length/2-1)||i >= totalPageCount-numbers.length)) 看这句括号,在教程里看不到后面的,其实还有,不过我的能力分析不出来,您给的两条回答我已看了,明白一点,只不过我想问就这个能满足当前页在分页显示条中排在中间吗?就是比如====上一页1.2.3.4.5.6.7.8.9.10下一页 根据上面的if可以将当前页在任何时候都设置在中间位置吗?[/quote] 刚好以前我用js写过一个分页,敲好是当前在中间的情况,可以去我的博客看看
wenming12345678 2015-01-15
  • 打赏
  • 举报
回复
引用 2 楼 shijing266 的回复:
这是判断了两种情况 1、当totalPageCount<=10 的时候,满足(i >= index-(numbers.length/2-1) 2、当totalPageCount>10的时候,满足 i >= totalPageCount-numbers.length
if ((i >= index-(numbers.length/2-1)||i >= totalPageCount-numbers.length)) 看这句括号,在教程里看不到后面的,其实还有,不过我的能力分析不出来,您给的两条回答我已看了,明白一点,只不过我想问就这个能满足当前页在分页显示条中排在中间吗?就是比如====上一页1.2.3.4.5.6.7.8.9.10下一页 根据上面的if可以将当前页在任何时候都设置在中间位置吗?
  • 打赏
  • 举报
回复
这是判断了两种情况 1、当totalPageCount<=10 的时候,满足(i >= index-(numbers.length/2-1) 2、当totalPageCount>10的时候,满足 i >= totalPageCount-numbers.length
wenming12345678 2015-01-15
  • 打赏
  • 举报
回复

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧