我的循环只检查数组的第一项,这使我的代码每次都失败:
String igitems = "IgnoredItems";
String items = getConfig().getString("IgnoredItems.itemid");
items = items + args[0] + ",";
String[] myarray = items.split(",");
for(String fitem : myarray) {
if(!fitem.equals(args[0])){
getConfig().set(igitems + ".itemid", items);
saveConfig();
reloadConfig();
sender.sendMessage(prefix + ChatColor.GREEN + "Added " + ChatColor.GOLD + args[0] + ChatColor.GREEN + " to ignore list.");
break;
} else {
sender.sendMessage(prefix + ChatColor.RED + "Item is already in the list");
break;
}
}
如果我在system.out.print(myarray);
之后添加String[] myarray = items.split(",");
,则会显示整个数组,这是正确的:
1:0
2:0
5:0
8:0
5:0
但是,当我在system.out.print(fitem);
之后添加for(String fitem : myarray){
时,它只显示数组中的第一项(1:0),这几乎每次都会使我的代码失败,除非它是第一个项目
答案 0 :(得分:0)
你正在打破循环。我不知道在哪种情况下你想打破循环,但即使fitem.equals(args[0])
或!fitem.equals(args[0])
你正在调用中断。
也许你只想打破其他情况?
if(!Arrays.asList(my).contains(args[0])){
getConfig().set(igitems + ".itemid", items);
saveConfig();
reloadConfig();
sender.sendMessage(prefix + ChatColor.GREEN + "Added " + ChatColor.GOLD + args[0] + ChatColor.GREEN + " to ignore list.");
}else{
sender.sendMessage(prefix + ChatColor.RED + "Item is already in the list")
}
break
将从最近的循环返回。所以在你的情况下,你停止迭代for(String fitem : myarray)
A continue
而不是立即在你的循环中领先一步
答案 1 :(得分:0)
查看this question及其答案 - 您break
语句导致此行为。你可能想要continue
或者根本不需要任何东西,因为那会有相同的行为。
答案 2 :(得分:0)
您正在添加,
之后而不是之间。
String items = getConfig().getString("IgnoredItems.itemid");
// Wrong
items = items + args[0] + ",";
// Ok
if (items.isEmpty()) {
items = args[0];
} else {
items = items + "," + args[0];
}
但是,请查看整个方法。
请参阅MemorySection.getStringList(String)
。
List<String> items = getConfig().getStringList("IgnoredItems.itemid");
items.add(args[0]);
getConfig().set("IgnoredItems.itemid", items);
答案 3 :(得分:0)
我用
替换了循环 if(!items.contains(args[0] + ",")){
getConfig().set(igitems + ".itemid", items + args[0] + ",");
saveConfig();
sender.sendMessage(prefix + ChatColor.GREEN + "Added " + ChatColor.GOLD + args[0] + ChatColor.GREEN + " to ignore list.");
} else {
sender.sendMessage(prefix + ChatColor.RED + "Item (" + ChatColor.GOLD + args[0] + ChatColor.RED + ") is already in the list !");
}
它工作正常,解决了。