我的循环只检查第一个数组项

时间:2014-10-27 21:45:41

标签: java loops bukkit

我的循环只检查数组的第一项,这使我的代码每次都失败:

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),这几乎每次都会使我的代码失败,除非它是第一个项目

4 个答案:

答案 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 !");
                    }

它工作正常,解决了。