2016.4.26【i码邦】每日一练--模拟分页

编程实现:下图问题。  不限形式,不限格局,百花齐放才是编程的春天!!大家可以结合自己实际平时的分页内容实现,希望今天看到更灿烂的代码!
 

tu0426.jpg

 
 
我们只直播每日一练的编程实战,动手才是王道!
 

宣传图片22.jpg

 

--来自网页客户端
已邀请:

未探索的星球 - まあ、どうせ俺は醜いものだろう

赞同来自: admin lanlan2501 AustinGJ

// 写得比较差,有待优化修改
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test3 {
    // 用 Java编写一个模拟分页的程序,根据输入的数据升序排序后,再进行分页,
    // 比如: 控制台输入10条数据,先对10条数据升序排序,在按照输入的每页显示条数来依次显示各页内容,并显示总条数
    public static void main(String[] args) throws Exception {
        // 模拟数据
        List<Data> datas = new ArrayList<>();
        datas.add(new Data(5, "EEE"));
        datas.add(new Data(3, "CCC"));
        datas.add(new Data(1, "AAA"));
        datas.add(new Data(2, "BBB"));
        datas.add(new Data(4, "DDD"));
        System.out.println("排序前:");
        for (int i = 0; i < datas.size(); i++) {
            System.out.println(datas.get(i));
        }
        Collections.sort(datas);
        System.out.println();
        System.out.println("排序后:");
        for (int i = 0; i < datas.size(); i++) {
            System.out.println(datas.get(i));
        }
        
        
        System.out.println();
        Page pageDatas = new Page(datas, 2);
        System.out.println("总数据量: " + pageDatas.getTotalCount());
        System.out.println("每页数据数: " + pageDatas.getDataPerPage());
        System.out.println("总页数: " + pageDatas.getTotalPage());
        
        System.out.println();
        for (int i = 1; i <= pageDatas.getTotalPage(); i++) {
            System.out.println("第 " + i + " 页数据: ");
            List<Data> dp = pageDatas.getDataForPageIndex(i);
            for (Data data : dp) {
                System.out.println(data);
            }
            System.out.println("-------------------------------");
        }
        
        
    }
}

class Page {
    private int currenPage;      // 当前页数(页数从1开始)
    private int totalPage;       // 总页数
    private int dataPerPage;     // 每页数据数
    private int startIndex;
    private int endIndex; 
    private List<?> lists;
    
    
    public Page(List<?> lists, int dataPerPage) {
        init(lists,dataPerPage);
    }
    
    public void init(List<?> lists, int dataPerPage){
        this.lists = lists;
        this.currenPage = 1;
        this.dataPerPage = dataPerPage;
        this.totalPage = getTotalPage();
    }


    // 总数据量
    public int getTotalCount() {
        return lists.size();
    }
    
    
    // 总页数 = 总数据量 / 每页数据量 + 总数据量 % 每页数据量 == 0? 0 : 1
    public int getTotalPage() {
        int pages = getTotalCount() / getDataPerPage();
        if(getTotalCount() % getDataPerPage() == 0){
            pages += 0;
        }else{
            pages += 1;
        }
        return pages;
    }
    
    // 每页数据量(set)
    public void setDataPerPage(int dataPerPage) {
        this.dataPerPage = dataPerPage;
    }
    
    // 每页数据量(get)
    public int getDataPerPage() {
        return dataPerPage;
    }
    
    // 开始索引 = (当前页数 - 1) * 每页数据数 
    public int getStartIndex(int currenPage) {
        return (currenPage - 1) * dataPerPage;
    }
    
    // 结束索引 = 当前页数(不是最后一页) * 每页数据数 - 1
    // 结束索引 = 数据最后的索引
    public int getEndIndex(int currenPage) {
        int trueEndIndex = currenPage * dataPerPage - 1;
        int lastIndex = getTotalCount() - 1;
        if(trueEndIndex > lastIndex){
            return lastIndex;
        }
        return trueEndIndex;
    }
    
    public List getDataForPageIndex(int pageIndex) throws Exception{
        ArrayList datasForPage = null;
        if(pageIndex >= 1 && pageIndex <= totalPage){
            datasForPage = new ArrayList<>();
            int startIndex = getStartIndex(pageIndex);
            int endIndex = getEndIndex(pageIndex);
            for (int i = startIndex; i <= endIndex; i++) {
                datasForPage.add(lists.get(i));
            }
        }
        return datasForPage;
        
    }
    
}

class Data implements Comparable<Data> {
    private Integer id;
    private String content;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    
    public Data() {
        super();
    }
    public Data(Integer id, String content) {
        super();
        this.id = id;
        this.content = content;
    }
    @Override
    public String toString() {
        return "Data [id=" + id + ", content=" + content + "]";
    }
    @Override
    public int compareTo(Data o) {
        return this.getId().compareTo(o.id);
    }
}

 
 

0426-1.png


0426-2.png

 

--来自网页客户端

fengyun12

赞同来自: admin

/**
* 每日一练 20160426
* 根据输入数据的升序排序后,再进行分页
*/
public void ex160426(){
InputStreamReader isr=new InputStreamReader(System.in); //建立标准输入流
BufferedReader br=new BufferedReader(isr); //建立缓冲模式
String hs;
int rowsnum; //用来记录行数
int pagerownum; //用来记录一页一共几行
int page; //用来记录要查看哪一页
String[] data_in;
try{
System.out.println("请输入要输入数据的行数:");
hs=br.readLine();
//需要验证是否输入的是数字
rowsnum=Integer.parseInt(hs);
data_in=new String[rowsnum]; //根据输入的行数新增数组
for(int i=0;i<rowsnum;i++){
System.out.println("请输入第"+(i+1)+"行数据:");
data_in[i]=br.readLine();
}

StaticFunction.bubbleSort(data_in, true);

System.out.println("请输入一页的行数:");
hs=br.readLine();
//需要验证是否输入的是数字
pagerownum=Integer.parseInt(hs); //获取一页的行数
do{
System.out.println("请输入查看哪一页(输入break结束程序):");
hs=br.readLine();
if(hs.compareTo("break")==0){
break;
}
//需要验证是否输入的是数字
page=Integer.parseInt(hs);
for(int i=(page-1)*pagerownum;i<page*pagerownum;i++){
if(i<data_in.length){
System.out.println(data_in[i]);
}
}
System.out.println("总条数为:"+data_in.length);
}while(true);


}catch(IOException ex){
ex.printStackTrace();
return;
}

}
/**
* @description 辅助类
* @author lsf
* @date 20160427
*/
public class StaticFunction {

/**
* 对数组进行冒泡排序
* @param str为排序数组,type:true为升序,false为降序
*/
public static void bubbleSort(String[] str,boolean type){
String ls;
for(int i=0;i<str.length-1;i++){
for(int j=0;j<str.length-1-i;j++ ){
if(str[j].compareTo(str[j+1])>0 && type){
ls=str[j];
str[j]=str[j+1];
str[j+1]=ls;
}
if(str[j].compareTo(str[j+1])<0 && !type){
ls=str[j];
str[j]=str[j+1];
str[j+1]=ls;
}

}

}
}
}

--来自移动客户端

admin

赞同来自:

坚持做题目,做练习的都是好样的!
 
成为大神指日可待!

--来自网页客户端

libertyzheng

赞同来自:

package learning;
import java.util.*;
import java.util.Arrays;

public class MoNiFenYe {
    public static void main(String[] args) {
        int a[]={3,5,2,6,9,4,1};
        System.out.println("请输入每页显示的条数:");            
        Scanner scan=new Scanner(System.in);
        int lineNumber=scan.nextInt();
        System.out.println("原数组为"+Arrays.toString(a));
        int b[]=MoNiFenYe.sort(a);    
        System.out.println("排序后的数组为"+Arrays.toString(b));        
        int count=0;
        int totalPages;
        int page=0;
        for(int i=0;i<a.length;i++){
            if(page==0){
                System.out.print("第1页:");
                page++;
            }                
            if(count==lineNumber){
                System.out.println();
                page++;
                System.out.print("第"+page+"页:");
                count=0;
                
            }
            System.out.print(a[i]+"  ");
            count++;
            
        }
        System.out.println();
        
        if(a.length%lineNumber==0){
            totalPages=a.length/lineNumber;
        }else{
            totalPages=a.length/lineNumber+1;
        }
        System.out.println("总条数"+a.length);
        System.out.println("总页数为:"+totalPages);        
    }

    private static int[] sort(int[] a) {
        int temp;
        int len=a.length;
        for(int i=0;i<len;i++){
            for(int j=0;j<i;j++){
                if(a[j]>a[i]){
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
        }
        return a;
        
    }

}
package learning;
import java.util.*;
import java.util.Arrays;

public class MoNiFenYe {
    public static void main(String[] args) {
        int a[]={3,5,2,6,9,4,1};
        System.out.println("请输入每页显示的条数:");            
        Scanner scan=new Scanner(System.in);
        int lineNumber=scan.nextInt();
        System.out.println("原数组为"+Arrays.toString(a));
        int b[]=MoNiFenYe.sort(a);    
        System.out.println("排序后的数组为"+Arrays.toString(b));        
        int count=0;
        int totalPages;
        int page=0;
        for(int i=0;i<a.length;i++){
            if(page==0){
                System.out.print("第1页:");
                page++;
            }                
            if(count==lineNumber){
                System.out.println();
                page++;
                System.out.print("第"+page+"页:");
                count=0;
                
            }
            System.out.print(a[i]+"  ");
            count++;
            
        }
        System.out.println();
        
        if(a.length%lineNumber==0){
            totalPages=a.length/lineNumber;
        }else{
            totalPages=a.length/lineNumber+1;
        }
        System.out.println("总条数"+a.length);
        System.out.println("总页数为:"+totalPages);        
    }

    private static int[] sort(int[] a) {
        int temp;
        int len=a.length;
        for(int i=0;i<len;i++){
            for(int j=0;j<i;j++){
                if(a[j]>a[i]){
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
        }
        return a;
        
    }

}

QQ截图2016051615.png


 

--来自网页客户端

要回复问题请先登录注册

Template error, template file not found