Java 迭代一次,同时仍然获得所有值
Java iterate once while still getting all the values
我目前正在使用 Bukkit 1.8 API,并使用 Java 7.
我正在进行迭代:
for(String ranks : plugin.getConfig().getStringList("selllallranks"))
在这个 for 循环中我有一个 if/else 语句,查看玩家是否有权限。如果他们这样做,应该给他们发送一次消息。但是,它向他们发送了 26 次。这是因为它正在迭代的内容中有 26 个字符串。
我已经 尝试 在 Google 上搜索一种方法来一次遍历多个值,同时仍然获得这些值,但没有找到我喜欢的东西。我将如何遍历所有值,同时仍然获取内部的所有值,将代码发送到 once.
我不能只在末尾添加 break;
的原因是因为他们可能没有对 26 个字符串之一的许可,但是在 26 个字符串之一,他们也可以有许可。如果我确实中断了,它将发送一条无效的消息消息,并在他们有权使用其他字符串的情况下继续使用代码。
我正在使用它来检查权限:
if(p.hasPermission("duocraft.sellall." + ranks)){
// continuing code
}else{
// send no permission message.
}
Inside of this for-loop I have an if/else statement, seeing if player
has a permission. If they do it should send them a message ONCE.
However, it is sending it to them 26 times. This is because what it is
iterating through has 26 strings inside of it.
一旦满足向玩家发送消息的条件,使用break
关键字退出循环有什么问题?
使用标志并在循环后发出消息。
像这样:
boolean hasPermission = true;
for(String ranks : plugin.getConfig().getStringList("selllallranks")) {
if(p.hasPermission("duocraft.sellall." + ranks)) {
// continuing code
} else {
hasPermission = false;
}
}
if(!hasPermission) {
// send no permission message.
}
如果您想跟踪缺少哪些权限,您可以将它们存储在 Set
:
Set<Sting> unPermitted = new HashSet<>();
for(String ranks : plugin.getConfig().getStringList("selllallranks")) {
if(p.hasPermission("duocraft.sellall." + ranks)) {
// continuing code
} else {
unPermitted.add(ranks);
}
}
if(!unPermitted.isEmpty()) {
// send no permission message.
}
我目前正在使用 Bukkit 1.8 API,并使用 Java 7.
我正在进行迭代:
for(String ranks : plugin.getConfig().getStringList("selllallranks"))
在这个 for 循环中我有一个 if/else 语句,查看玩家是否有权限。如果他们这样做,应该给他们发送一次消息。但是,它向他们发送了 26 次。这是因为它正在迭代的内容中有 26 个字符串。
我已经 尝试 在 Google 上搜索一种方法来一次遍历多个值,同时仍然获得这些值,但没有找到我喜欢的东西。我将如何遍历所有值,同时仍然获取内部的所有值,将代码发送到 once.
我不能只在末尾添加 break;
的原因是因为他们可能没有对 26 个字符串之一的许可,但是在 26 个字符串之一,他们也可以有许可。如果我确实中断了,它将发送一条无效的消息消息,并在他们有权使用其他字符串的情况下继续使用代码。
我正在使用它来检查权限:
if(p.hasPermission("duocraft.sellall." + ranks)){
// continuing code
}else{
// send no permission message.
}
Inside of this for-loop I have an if/else statement, seeing if player has a permission. If they do it should send them a message ONCE. However, it is sending it to them 26 times. This is because what it is iterating through has 26 strings inside of it.
一旦满足向玩家发送消息的条件,使用break
关键字退出循环有什么问题?
使用标志并在循环后发出消息。
像这样:
boolean hasPermission = true;
for(String ranks : plugin.getConfig().getStringList("selllallranks")) {
if(p.hasPermission("duocraft.sellall." + ranks)) {
// continuing code
} else {
hasPermission = false;
}
}
if(!hasPermission) {
// send no permission message.
}
如果您想跟踪缺少哪些权限,您可以将它们存储在 Set
:
Set<Sting> unPermitted = new HashSet<>();
for(String ranks : plugin.getConfig().getStringList("selllallranks")) {
if(p.hasPermission("duocraft.sellall." + ranks)) {
// continuing code
} else {
unPermitted.add(ranks);
}
}
if(!unPermitted.isEmpty()) {
// send no permission message.
}