如何获取列表的多个页面?

时间:2017-04-24 15:56:00

标签: java minecraft bukkit

所以我正在开发一个插件插件。这是关于朋友的。如果该人执行命令查看他朋友的列表,我需要有页面,每个页面包含7个朋友。问题是,它不是一个朋友列表,总是和你的朋友列表改变的人一样。

案例我有10个朋友。 我会在第一页上找到7个朋友,在第二页上找到剩下的3个朋友。 案例我有70个朋友。 我要10页。

编辑:很抱歉混淆。我的问题是:如何在示例中做到这一点。如果他没有7,则玩家会/朋友列表显示第1页和7位朋友或更少。他是否有更多会有第二页:/朋友列表2.依此类推。

2 个答案:

答案 0 :(得分:2)

这是如何计算需要多少页面的代码。它可以在95%的时间内工作,如果有人知道更好的解决方案,请编辑它,因为我也希望改进这个算法。

int friendsPerPage = 5;
int friendsIHave = 20;

int pages = (friendsIHave / friendsPerPage ) + (friendsIHave % friendsPerPage  == 0 ? 0 : 1);

我假设您知道如何获取/好友列表(LISTHERE)。让我们将LISTHERE存储到页面变量中。然后我们可以简单地打印出它的内容:

int page = ... // you have to make this one
int max = page * friendsPerPage;
int min = max - friendsPerPage;
for(int i = min + 1; i <= max; i++) { // loop through all friends in that page
     // access your friend array here and print it out using "i"
}

我希望它能让你走上正轨!

答案 1 :(得分:0)

你会如何看待朋友? 作为GUI(Inventar)还是聊天?
GUI代码(未完成):

ArrayList<String> players = new ArrayList<>();
int pages = ((players.size-(players.size()%7))/7)+(players.size()%7 == 0 ? 0 : 1);
ArrayList<String>[] pages = new ArrayList<>()[pages];
int lastpage = 0;
int i = 0;
for(String name : players)
{
     pages[lastpage].add(name);    
     i++;
     if(i == 6){
        i = 0;
        lastpage ++;
    }
}

pages 是一个页面数组。 你如何展示它们是你的决定。